Foros del Web » Programando para Internet » Javascript »

Problema con validación de un formulario Html mediante Javascript

Estas en el tema de Problema con validación de un formulario Html mediante Javascript en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/01/2009, 08:50
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 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
  #2 (permalink)  
Antiguo 09/01/2009, 09:15
 
Fecha de Ingreso: enero-2009
Mensajes: 10
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Problema con validación de un formulario Html mediante Javascript

@Letni.
Hola Letni, he copiado y pegado el código javascript y html y he corregido los fallos gramaticales que había.

validar.js
Código:
function valida_envia(){ 
    //valido el nombre 
    if (document.fvalida.nombre.value.length==0){ 
       alert("Tiene que escribir su nombre") 
       document.fvalida.nombre.focus() 
       return 0; 
    } 

    //valido la edad. tiene que ser entero mayor que 18 
    edad = document.fvalida.edad.value 
    edad = validarEntero(edad) 
    document.fvalida.edad.value=edad 
    if (edad==""){ 
       alert("Tiene que introducir un número entero en su edad.") 
       document.fvalida.edad.focus() 
       return 0; 
    }else{ 
       if (edad<18){ 
          alert("Debe ser mayor de 18 años.") 
          document.fvalida.edad.focus() 
          return 0; 
       } 
    } 

  //  valido el interés 
    if (document.fvalida.interes.selectedIndex==0){ 
       alert("Debe seleccionar un motivo de su contacto.") 
       document.fvalida.interes.focus() 
       return 0; 
    } 

    //el formulario se envia 
    alert("Muchas gracias por enviar el formulario"); 
    document.fvalida.submit(); 
}

function validarEntero(valor){
     //intento convertir a entero.
     //si era un entero no le afecta, si no lo era lo intenta convertir
     valor = parseInt(valor)

      //Compruebo si es un valor numérico
      if (isNaN(valor)) {
            //entonces (no es numero) devuelvo el valor cadena vacia
            return "";
      }else{
            //En caso contrario (Si era un número) devuelvo el valor
            return valor;
      }
}
formulario.html
Código HTML:
<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> 
  #3 (permalink)  
Antiguo 09/01/2009, 09:22
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Problema con validación de un formulario Html mediante Javascript

Muchísimas gracias, te ganaste Karma.

Saludos.
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 04:31.