Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/01/2009, 08:50
letni
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años, 3 meses
Puntos: 1
Pregunta Problema con validación de un formulario Html mediante Javascript

Hola, tengo un formulario guardado con extensión html, llamado prueba.html y tengo un archivo Javascript que hace la validación del formulario, llamado validar.js

Inicialmente lo tenía así y la validación me funcionaba, aunque sólo para el campo Nombre:

prueba.html

Código HTML:
<script type="text/javascript" src="validar.js"></script>
<form name="fvalida"> 
<table> 
<tr> 
    <td>Nombre: </td> 
    <td><input type="text" name="nombre" size="30" maxlength="100"></td> 
</tr> 
<tr> 
    <td>Edad: </td> 
    <td><input type="text" name="edad" size="3" maxlength="2"></td> 
</tr> 
<tr> 
    <td>Interés:</td> 
    <td> 
    <select name=interes> 
    <option value="Elegir">Elegir 
    <option value="Comercial">Contacto comercial 
    <option value="Clientes">Atención al cliente 
    <option value="Proveedores">Contacto de proveedores 
    </select> 
    </td> 
</tr> 
<tr> 
    <td colspan="2" align="center"><input type="button" value="Enviar" onclick="valida_envia()"></td> 
</tr> 
</table> 
</form> 
validar.js

Código javascript:
Ver original
  1. function valida_envia(){
  2.     //valido el nombre
  3.     if (document.fvalida.nombre.value.length==0){
  4.        alert("Tiene que escribir su nombre")
  5.        document.fvalida.nombre.focus()
  6.        return 0;
  7.     }
  8.  
  9.     valido la edad. tiene que ser entero mayor que 18
  10.     edad = document.fvalida.edad.value
  11.     edad = validarEntero(edad)
  12.     document.fvalida.edad.value=edad
  13.     if (edad==""){
  14.        alert("Tiene que introducir un número entero en su edad.")
  15.        document.fvalida.edad.focus()
  16.        return 0;
  17.     }else{
  18.        if (edad<18){
  19.           alert("Debe ser mayor de 18 años.")
  20.           document.fvalida.edad.focus()
  21.           return 0;
  22.        }
  23.     }
  24.  
  25.     valido el inter&#233;s
  26.     if (document.fvalida.interes.selectedIndex==0){
  27.        alert("Debe seleccionar un motivo de su contacto.")
  28.        document.fvalida.interes.focus()
  29.        return 0;
  30.     }
  31.  
  32.     //el formulario se envia
  33.     alert("Muchas gracias por enviar el formulario");
  34.     document.fvalida.submit();
  35. }

pero luego me dispuse a introducir otra función (validarEntero()) en el archivo validar.js de modo que quedó así:

validar.js

Código javascript:
Ver original
  1. function valida_envia(){
  2.     //valido el nombre
  3.     if (document.fvalida.nombre.value.length==0){
  4.        alert("Tiene que escribir su nombre")
  5.        document.fvalida.nombre.focus()
  6.        return 0;
  7.     }
  8.  
  9.     valido la edad. tiene que ser entero mayor que 18
  10.     edad = document.fvalida.edad.value
  11.     edad = validarEntero(edad)
  12.     document.fvalida.edad.value=edad
  13.     if (edad==""){
  14.        alert("Tiene que introducir un número entero en su edad.")
  15.        document.fvalida.edad.focus()
  16.        return 0;
  17.     }else{
  18.        if (edad<18){
  19.           alert("Debe ser mayor de 18 años.")
  20.           document.fvalida.edad.focus()
  21.           return 0;
  22.        }
  23.     }
  24.  
  25.     valido el inter&#233;s
  26.     if (document.fvalida.interes.selectedIndex==0){
  27.        alert("Debe seleccionar un motivo de su contacto.")
  28.        document.fvalida.interes.focus()
  29.        return 0;
  30.     }
  31.  
  32.     //el formulario se envia
  33.     alert("Muchas gracias por enviar el formulario");
  34.     document.fvalida.submit();
  35. }
  36.  
  37. function validarEntero(valor){
  38.      //intento convertir a entero.
  39.      //si era un entero no le afecta, si no lo era lo intenta convertir
  40.      valor = parseInt(valor)
  41.  
  42.       //Compruebo si es un valor numérico
  43.       if (isNaN(valor)) {
  44.             //entonces (no es numero) devuelvo el valor cadena vacia
  45.             return &#8220;&#8221;
  46.       }else{
  47.             //En caso contrario (Si era un número) devuelvo el valor
  48.             return valor
  49.       }
  50. }

y ahora ya no me valida ni el nombre.

¿Qué es lo que hago mal?

Gracias.

Última edición por letni; 09/01/2009 a las 09:51