Bueno, yo me entretuve en otro script que es más largo pero funciona (creo) en todos los navegadores (al menos en IE,NS y mozilla)
Código:
<script language="JavaScript" type="text/javascript">
//Permite insertar sólo números, letras, - y _ )
//http://javascript.tunait.com/
//[email protected]
var pat = /[ªº!¡|"@·#$~%€&¬\/()]=?\'¿\*\+\[`^´><\{\}¨\.,\\;: áéíóú]/i
function comprueba(valor,donde){
if(pat.test(valor)){
donde.disabled = true
car = new RegExp("\\" +valor,"g")
if(valor == " "){
alert('No puedes usar espacios en blanco')
}
else{
alert('el caracter ' + valor +' es inválido')
}
donde.value = donde.value.replace(car,'')
donde.disabled = false
donde.focus()
}
if(pat.test(donde.value)){sale(donde.value,donde)}
}
function sale(valor,donde){
if(pat.test(valor)){
valorcete = valor.replace(pat,'')
sale(valorcete,donde)
donde.value = valorcete
}
}
</script>
</head>
<body>
<input type="text" id="pepe" onkeyup="comprueba(this.value.charAt(this.value.le ngth-1),this)" onkeypress="comprueba(this.value.charAt(this.value .length-1),this)" onblur="sale(this.value,this)">
</body>
</html>