Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Poner función: el nombre no contiene números

Estas en el tema de Poner función: el nombre no contiene números en el foro de Javascript en Foros del Web. Buenas, Estoy haciendo un formulario y hay un punto con el que llevo ya horas y no consigo encontrar la solución, por eso escribo, a ...
  #1 (permalink)  
Antiguo 01/05/2013, 12:25
Avatar de Aniston  
Fecha de Ingreso: febrero-2004
Ubicación: España
Mensajes: 11
Antigüedad: 20 años, 2 meses
Puntos: 0
Poner función: el nombre no contiene números

Buenas,

Estoy haciendo un formulario y hay un punto con el que llevo ya horas y no consigo encontrar la solución, por eso escribo, a ver si alguien puede ayudarme.

Cuando alguien ponga datos en el campo Nombre, pueden salir dos errores:

- La longitud del nombre es mayor de cinco caracteres.
- El nombre no contiene números.

El problema es que solo me aparece el error de La longitud del nombre es mayor de cinco caracteres.

Si en el campo nombre pongo por ejemplo: 21, me lo da como correcto, en cambio si pongo 21212, me sale el siguiente mensaje: El nombre no contiene números. Yo lo que quiero es que me salga ese error aunque solo se ponga un número.

No sé si me explico. Aquí dejo el código entero.

Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>Validar formulario</title>
  6.  
  7.  <script type="text/javascript">
  8. function validar()
  9. {
  10.  if (document.formulario.nombre.value.length==0)
  11.                  {
  12.                     alert("No ha introducido nombre.");
  13.                     document.formulario.nombre.focus();
  14.                     return;
  15.                  }
  16.  if (document.formulario.nombre.value.length<5)
  17.                  {
  18.                     alert("La longitud del nombre es mayor de cinco caracteres.");
  19.                     document.formulario.nombre.focus();
  20.                     return;
  21.                  }
  22. Nombre=document.formulario.nombre.value;
  23.             if (Nombre.length==0 || !isNaN(Nombre))
  24.             {
  25.                     alert("El nombre no contiene números.");
  26.                     document.formulario.nombre.focus();
  27.                     return;
  28.                  }
  29. Edad=document.formulario.edad.value;
  30.              if ( Edad.length==0 || isNaN(Edad))
  31.             {   alert("La edad solo contiene números");
  32.                 document.formulario.edad.focus();
  33.                 return;
  34.             }
  35. Edad=document.formulario.edad.value;   
  36.      if (Edad<18 || Edad>99)
  37.             {   alert("El valor de la edad está comprendido entre los valores 18 y 99.");
  38.                 document.formulario.edad.focus();
  39.                 return;
  40.             }
  41.     correo=document.formulario.email;  
  42.     if (correo.value.length==0 || correo.value.indexOf('@') == -1)
  43.          {
  44.           alert("La dirección de correo incluye una arroba y su longitud es superior a siete caracteres");
  45.           document.formulario.email.focus();
  46.           return;
  47.          }
  48.     cpostal=document.formulario.cp.value;
  49.         if (isNaN(cpostal) || (cpostal.length>5) || (cpostal.length<5))
  50.                     {
  51.                     alert("El código postal tiene 5 dígitos");
  52.                     document.formulario.cp.focus();
  53.                     return;
  54.                     }
  55.     Telefono=document.formulario.teléfono.value;
  56.         if (isNaN(Telefono) || (Telefono.length>9) || (Telefono.length<9))
  57.                     {
  58.                     alert("El teléfono son 9 digitos");
  59.                     document.formulario.telefono.focus();
  60.                     return;
  61.                     }
  62.  
  63.  
  64.  
  65.  if (document.formulario.nif.value.length==0)
  66.                 {
  67.                 alert("Escriba su DNI");
  68.                 document.formulario.nif.focus();
  69.                 return;
  70.                 }  
  71.       if (document.formulario.nif.value.length<8)
  72.       {
  73.        alert("El DNI son 8 dígitos númericos y una letra");
  74.        document.formulario.nif.focus();
  75.        return;
  76.       }
  77. {
  78.     abc=document.formulario.nif.value
  79.     dni=abc.substring(0,abc.length-1)
  80.     let=abc.charAt(abc.length-1)
  81.    
  82.     if (!isNaN(let))
  83.      {
  84.       alert('Falta la letra')
  85.       document.formulario.nif.focus()
  86.       return;
  87.      }
  88.     else
  89.      {
  90.       cadena="TRWAGMYFPDXBNJZSQVHLCKET"
  91.       posicion = dni % 23
  92.       letra = cadena.substring(posicion,posicion+1)
  93.       if (letra!=let.toUpperCase())
  94.        {
  95.         alert("Nif no válido, introduce un dni correcto")
  96.         document.formulario.nif.focus()
  97.         return;
  98.        }
  99.      }         
  100.     }      
  101.  
  102.  
  103.                    
  104. }
  105.  
  106.  
  107. </script>
  108. </head>
  109.  
  110. <body>
  111.  <h2><font color="#054BBB">Introduzca sus datos personales:</font></h2>
  112.        
  113.         <form name="formulario">
  114.           <table border="0" width="350" cellspacing="3">
  115.             <tr>
  116.               <td width="50%" bgcolor="#FFF3D6" align="right">Nombre</td>
  117.               <td width="50%" bgcolor="#FFDC88">
  118.               <input type="text" name="nombre" size="20"></td>
  119.             </tr>
  120.             <tr>
  121.               <td width="50%" bgcolor="#FFF3D6" align="right">Edad (18-99)</td>
  122.               <td width="50%" bgcolor="#FFDC88">
  123.               <input type="text" name="edad" size="2" maxlength="2"></td>
  124.             </tr>
  125.             <tr>
  126.               <td width="50%" bgcolor="#FFF3D6" align="right">Dirección de correo</td>
  127.               <td width="50%" bgcolor="#FFDC88">
  128.               <input type="text" name="email" size="20"></td>
  129.             </tr>
  130.             <tr>
  131.               <td width="50%" bgcolor="#FFF3D6" align="right">Código postal</td>
  132.               <td width="50%" bgcolor="#FFDC88">
  133.               <input type="text" name="cp" size="5"></td>
  134.             </tr>
  135.             <tr>
  136.               <td width="50%" bgcolor="#FFF3D6" align="right">Teléfono</td>
  137.               <td width="50%" bgcolor="#FFDC88">
  138.               <input type="text" name="teléfono" size="9" maxlength="9"></td>
  139.             </tr>
  140.             <tr>
  141.               <td width="50%" bgcolor="#FFF3D6" align="right">DNI</td>
  142.               <td width="50%" bgcolor="#FFDC88">
  143.               <input type="text" name="nif" size="9"></td>
  144.             </tr>
  145.           </table>
  146.           <p><input type="Button" value="Validar datos" name="enviar" onclick="validar()"></p>
  147.         </form>
  148. </body>
  149. </html>
  #2 (permalink)  
Antiguo 01/05/2013, 14:08
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Poner función: el nombre no contiene números

Buenas,

Para verificar que la cadena no contenga números no puedes usar la función isNaN (está sólo devuelve si una cadena es un número o no).

Puedes usar la siguiente expresión regular:

Código Javascript:
Ver original
  1. if (/\d+/.test("123a3"))
  2. {
  3.     alert("No debe contener números");    
  4. }
  #3 (permalink)  
Antiguo 01/05/2013, 14:24
Avatar de Aniston  
Fecha de Ingreso: febrero-2004
Ubicación: España
Mensajes: 11
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Poner función: el nombre no contiene números

Hola!

Gracias por contestar tan rápido!

He modificado lo que me has dicho, lo he dejado así:

Código Javascript:
Ver original
  1. Nombre=document.formulario.nombre.value;
  2.             if (/\d+/.test("123a3"))
  3.                 {
  4.                     alert("El nombre no contiene números.");    
  5.                 }

Pero me sigue saliendo el mismo error. Si escribo por ejemplo 12, me sale el cuadro de error que dice: La longitud del nombre es mayor de cinco caracteres.
  #4 (permalink)  
Antiguo 01/05/2013, 15:31
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Poner función: el nombre no contiene números

La condición de la longitud está mal.

Sería:

Código Javascript:
Ver original
  1. document.formulario.nombre.value.length<=5
  #5 (permalink)  
Antiguo 01/05/2013, 17:26
Avatar de Aniston  
Fecha de Ingreso: febrero-2004
Ubicación: España
Mensajes: 11
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Poner función: el nombre no contiene números

Sigue sin funcionarme...

Alguna otra idea?
  #6 (permalink)  
Antiguo 01/05/2013, 17:56
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Poner función: el nombre no contiene números



La condición sigue mal, eso me pasa por no fijarme bien, pero tienes que mirar las cosas con cuidado.

El problema es que estás indicando con la condición ( < 5 ) que aparezca el mensaje cuando tiene menos de 5 letras cuando es al contrario.

Sería:

Código Javascript:
Ver original
  1. if (document.formulario.nombre.value.length>5)
  2. {
  3.    alert("La longitud del nombre es mayor de cinco caracteres.");
  4. }

Aparte y sin malos rollos, deberías fijarte un poco más en cosas como estas que son relativamente sencillas (lo mío ha sido un lapsus porque tenía prisa, pero las cosas hay que mirarlas varias veces antes de preguntar). No te lo tomas a mal, es un consejo nada más, eh. No tengo ningún problema en contestar aunque sean para cosas así.
  #7 (permalink)  
Antiguo 02/05/2013, 02:35
Avatar de Aniston  
Fecha de Ingreso: febrero-2004
Ubicación: España
Mensajes: 11
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Poner función: el nombre no contiene números

Hola,

Gracias por responder. Lo de "la longitud del nombre es mayor a cinco caracteres" ya lo tenía bien, ya que lo que quiero es que salga el mensaje de error si pone menos de 5 letras, pero gracias igualmente.

El problema del post es que este error no me aparece:

Código Javascript:
Ver original
  1. Nombre=document.formulario.nombre.value;
  2.             if (Nombre.length==0 || !isNaN(Nombre))
  3.             {
  4.                     alert("El nombre no contiene números.");
  5.                     document.formulario.nombre.focus();
  6.                     return;

Lo he cambiado por el que me dijiste:

Código Javascript:
Ver original
  1. Nombre=document.formulario.nombre.value;
  2.             if (/\d+/.test("123a3"))
  3.                 {
  4.                     alert("El nombre no contiene números.");    
  5.                 }

Y ahora si que me funciona, si pongo por ejemplo: Laura3, me sale el error de que el nombre no contiene números. Le añadí un return; al final porque ya no me cogía ningún error más, y ahora lo que hace es que me sale el error de: El nombre no contiene números, le doy a aceptar y me pasa directamente al error de La edad solo contiene números, habiendo puesto números.
  #8 (permalink)  
Antiguo 02/05/2013, 08:34
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Poner función: el nombre no contiene números

Todo muy confuso, si el nombre NO debe de contener números, porque el mensaje de error es
Cita:
El nombre no contiene números.
Si se ingresa un número y eso es un error

Error: el nombre no puede contener números !
o
Error: el nombre contiene números !

Luego la validación debe ser llamada de esta forma

Código:
<script>
function validar(){
var valor = document.getElementById('usuario').value;

if(valor contiene numeros){
// mensaje de error
return false;
}

if(valor supera caracteres máximos){
// mensaje de error
return false;
}


}

</script>
<form action="algo.php"onsubmit="return validar();">
<input type="text" id="nombre" ...>
<input type="submit" />
</form>
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 02/05/2013, 10:12
Avatar de Aniston  
Fecha de Ingreso: febrero-2004
Ubicación: España
Mensajes: 11
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Poner función: el nombre no contiene números

Ya está solucionado, muchas gracias!

Etiquetas: formulario, html, input, nombre
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:29.