Cita: <html>
<head>
<script>
function mostrar(caracter) {
esNetscape=(document.layers);
letra = (esNetscape) ? caracter.which : caracter.keyCode;
if(String.fromCharCode(letra)=="a" || String.fromCharCode(letra)=="b"){
alert(" no debes precionar las teclas a o b");
return false;
}else{
return true;
}
}
</script></head>
<body>
<form name="form1" method="post" action="">
<input type="text" name="textfield" onKeyPress=" return mostrar(event)">No deja precionar la tecla a y b
</form>
</body>
</html>
Siguiendo con tu ejemplo, la clave para "anular" la tecla precionada es utilizar "return" al llamar ala funcion y que esta última de como resultado "true" o "false" dependiendo de la situación.
Pero tambien tengo que decirte, que en mi opinión, lo correcto sería hacer la validación con expreciones regulares (sobre todo si son varios caracteres). En las FAQ hay algunos ejemplos.
saludos