2011-06-06 27 views
5
 <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> 

Ese es mi código HTML, he descubierto cómo obtener solo datos alfanuméricos en los campos, pero ¿cómo logro que solo permita un nombre de usuario que comience con un capital?¿Cómo hacer para que una cadena tenga que comenzar con una letra mayúscula con JavaScript?

 <script language="javascript"> 

       </script> 
+0

+1 ¡Por un título autorreferencial! –

+0

¿cuál es el contenido de la función validate()? –

Respuesta

3

La forma más sencilla de comprobar esto es con un regular expression:

function(str){ 
    return /^[A-Z]/.test(str); 
} 

vuelve true cuando la cadena de entrada comienza con un capital, falso en caso contrario. (Esta expresión regular particular - los bits entre los // caracteres - está diciendo, 'coincide con el inicio de la cadena seguido de cualquier carácter individual en el rango A-Z'.)

En términos de su código HTML anterior, Necesitaremos los contenidos de la función validate() para determinar dónde debe ir la coincidencia de expresiones regulares.

+2

el '. *' No es necesario :) –

+0

Soy un novato completo en esto, ¿cómo podría escribir eso en una función completa usando mi HTML de arriba? – Jason

+0

edición respuesta ahora en respuesta a los comentarios. Gracias por la captura, cw =) –

0

En su función de validación, utilice una expresión regular match así:

if (titleString.match(/^[A-Z]/)) 
    <ok> 
+0

Intenté que está bien, ¿no funcionó? ¿Podrías escribir la función completa? – Jason

0
var letter = str[0]; 
if (letter !== letter.toUpperCase()){ 
    //not uppercase! 
} 
+0

He probado eso con un enfoque similar, por el hecho de admitir caracteres latinos no estándar, pero debe hacer mucho más que eso para validarlo, como descartar números, otros caracteres aleatorios, etc. – Niklas

+0

hacer una prueba adicional con 'toLowerCase()' debería eliminar cualquier cosa que no sea de la letra, aunque probablemente quieras darle la vuelta a tus condiciones. 'var isok = (letter === letter.toUpperCase() && letter! == letter.toLowerCase());' – lincolnk

0

Esto comprobará para ver si el nombre de usuario introducido comienza con una letra mayúscula, y es seguido por 5 - 24 caracteres alfanuméricos .

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html> 

    <head> 

     <script type="text/javascript"> 

      function validate() { 

       var the_input = document.getElementById('userName').value; 

       if (!the_input.match(/^[A-Z]([A-Z]|[a-z]|[0-9]){5,24}$/)) { 

        alert('Your username must begin with a capital letter, and contain between 6 and 25 alphanumeric characters.'); 

        return false; 

       } else { 

        alert('Welcome!'); 

        return true; 

       } 

      } 

     </script> 

    </head> 

    <body> 

     <form action="http://www.cknuckles.com/cgi/echo.cgi" method="get" name="logOn"> 

      User Name:<br /> 

      <input type="text" name="userName" id="userName" size="25" /><br /> 
      Password:<br /> 
      <input type="password" name="pw" size="25" /><br /> 

      <input type="submit" value="Log In" onclick="return validate();"/> 

     </form> 

    </body> 

</html> 

Como acotación al margen, hay que señalar que esto no funcionará si el usuario tiene desactivado JavaScript - puede que desee tener un poco de validación del lado del servidor en lugar (o además) como prueba de fallos.

+0

Oye, gracias, lo intenté exactamente; no funcionó para mí :(... – Jason

+0

¿Incluiste? el 'id =" userName "' en el campo de entrada, así como la función 'validate()'? – Gruffy

+0

¿Qué está haciendo [label] (https://developer.mozilla.org/es/javascript) en el ' onclick' attribute? – Quentin

Cuestiones relacionadas