2011-06-06 20 views
11

He estado jugando con JavaScript, y lo que trato de hacer es solo permitir ciertos caracteres en el campo de palabra de paso: a-z, A-Z y 0-9.Cómo permitir solo caracteres numéricos alfa con JavaScript

<form action="http://www.cknuckles.com/cgi/echo.cgi" method="get" name="logOn"> 
    User Name:<br /> 
    <input type="text" name="userName" size="25" /><br /> 
    Password:<br /> 
    <input type="password" name="pw" size="25" /><br /> 
    <input type="submit" value="Log In" onClick="validate()"/> 
</form> 

anterior es mi HTML y JavaScript continuación es mi He intentado utilizar para validarlo - pero no funciona - ninguna pista.

<script language="javascript"> 
    document.logOn.onsubmit=validate; 

    function validate(){ 

var name=document.logOn.pw.value; 
    if(!name = "[a-zA-Z0-9]"){    
alert("Your Password Cant Have Any Funky Things In It - Play It Straight!"); 
    return false; 
}    

    return true; 
} 
</script> 

Pero esto no está funcionando. Todavía puedo poner caracteres como "*" y "[" y "{", etc.

¿Alguna idea?

Respuesta

25

Usted necesita para hacer su condición de prueba con una expresión regular, no una cadena:

if(!/^[a-zA-Z0-9]+$/.test(name)){ ... 

significado:

  • ^ - inicio de la línea
  • [a-zA-Z0-9]+ - uno o más caracteres/números
  • $ - fin de línea

o usted podría buscar la inversa de eso, lo que es "cualquier carácter que no sea aceptado":

if(/[^a-zA-Z0-9]/.test(name)){ 
+0

puede publicar un ejemplo de violín ... reemplazo el bloque if con el código anterior y no funciona ... – Lucky

+0

Esta pregunta tiene 18 meses. Si tiene problemas, publique una nueva pregunta. –

+0

Una solución agradable y limpia, gracias. – Sanjeev

4
if (name.match(/[\W_]/)) { //... 

Significado si la cadena "nombre" tiene cualquier carácter que es un no alfanumérico o un guión bajo luego ejecuta el bloque. Tenga en cuenta que tenemos que comprobar por separado para subrayado (_) porque la clase de caracteres alfanuméricos (\w) incluye el guión bajo (por lo que la clase negativa (\W) hace no).

Cuestiones relacionadas