Asunto: Validar el submit de páginas HTML.


Autor: Claudio J. Denega
Fecha: 18 Ene. 2002


Descripción:

Introducción: Una gran cantidad de datos que se cargan en una página web se pueden validar en la misma haciendo uso de funciones de JavaScript, sin necesidad de enviar un requerimiento al motor de Magic. Esto lo podemos hacer usando Event Handlers para cada objeto a validar, por ejemplo usando onChange u onBlur. Inclusive podemos agregar un botón que llame una función que valide los datos y si los mismos son correctos haga el submit.
Hasta aquí no hay problemas, pero con Internet Explorer de Microsoft nos encontramos que al presionar la tecla Enter en un form, ejecuta el submit sin pasar por nuestra función de validación y por lo tanto llegando los datos a destino sin ser validados.
Lo que vamos a explicar aquí es cómo solucionarlo usando otro Event Handler que es el de onSubmit.


onSubmit: Ejecuta código JavaScript cuando ocurre un evento de submit, o sea cuando un usuario hace submit en un formulario.

Se puede utilizar onSubmit para evitar que se realice el submit. Para esto se debe poner una sentencia return que devuelva false en el manejador del evento. Cualquier otro valor que devuelva permite que el submit continúe.
Suponiendo que tenemos un formulario llamado form y validamos un objeto de texto llamado dato, y teniendo una funcion valida() tenemos:

    La función:
    
    function valida()
    {
      if(document.form.dato.value=='') 
      {
        document.form.dato.focus();
        alert('Debe ingresar el dato');
        return false;
      }
      else
      {
        document.form.submit();
        return true;
      }
    }
    
    Y el manejador del evento en el objeto form:
    
    <FORM name="form" action="/cgi-bin/mgrqcgi" method="POST" onSubmit="return valida();">