sinprogramar.blogspot.com

9/6/09

Comprobar y validar formularios con jQuery

Para validar formularios vía javascript existen muchas opciones, pero jQuery combinado con el plugin form validate es una de las soluciones más completas y fáciles de utilizar.

Form validate permite comprobar desde direcciones de e-mail hasta tarjetas de crédito. Solo hay que subir el js de jQuery y del form validate a tu sitio web y enlazarlos desde el head. Además tiene la ventaja que muestra los mensajes de error en muchos idiomas.

Formulario validado con jQuery y form validate


Instrucciones para utilizar el plugin jquery form validate


  1. Vincular los js de jquery (primero) y del validador y añadir un script o un js mas con la personalización.

    Ejemplo con los js en la raíz:
    ...
    <script type="text/javascript" src="jquery.js"></script>

    <script type="text/javascript" src="jquery-validate/jquery.validate.js"></script>

    <script type="text/javascript" src="formulario.js"></script>

    </head>



  2. Para que se valide cada campo lo mas sencillo es añadir determinadas clases en cada input según lo que queramos validar.

    Ejemplo para un input de e-mail:

    <input type="text" name="email" id="email" class="required email" />

    Algunas de las clases y su función:

    required = campo obligatorio
    email = email correcto
    url = dirección url
    number = número entero
    numberDE = número con o sin decimales
    date = formato fecha (31/12/2009)


  3. Mensajes de error
    Los mensajes de error se muestran por defecto a continuación del campo erróneo. Aparecen dentro de la etiqueta <label> pero se puede cambiar desde jquery.validate.js buscando "errorElement: label" y remplazando "label" por elemento deseado.
    Tanto el nuevo elemento mostrado como el input que da el error se les añade la clase " error ". Deberemos ajustar su visualización con CSS.


  4. Mensajes e idioma
    Los mensajes ya están predefinidos según el error y se muestran por defecto en ingles. El plugin incluye múltiples idiomas en unos js que están dentro de la carpeta"localization". Para utilizar otro idioma enlazar el js después del plugin o copiar y pegar el texto en el js con la personalización.


  5. Personalización de la validación

    • Longitud de caracteres
      Para controlar el número de caracteres de un input añadir este código en el js personalizado:


      $(document).ready(function(){
      $("#formulario").validate({ /*sustituir "formulario" por el id de vuestro formulario*/

      rules: {

      nombre: { /*id del campo que se aplica la regla*/

      required: true,

      minlength
      : 3 /*caracteres mínimos*/

      }

      }

      });

      });


      Este ejemplo exije al menos 3 caracteres como mínimo en el input con el id "nombre".
      Para limitar la longitud máxima sustituir "minlength" por "maxlength".
      Para un rango mínimo y máximo pon "rangelength" Ejemplo: rangelength: [5, 10]


    • Valores numéricos
      Funciona igual que el ejemplo anterior, solo debemos sustituir minlength por el método deseado.

      *Valor mínimo: min. Ej: min: 16
      *Valor máximo: max
      *Rango valores: range. Ej: range: [5, 10]


    • Coincidencia entre campos
      Esto es útil para los campos de confirmación de contraseña o e-mail. Utilizaremos equalTo del mismo modo que los ejemplo anteriores y le indicaremos el id del campo con el que debe coincidir.

      $(document).ready(function(){
      $("#formulario").validate({ /*sustituir "formulario" por el id de vuestro formulario*/

      rules: {

      password2: { /*id del campo que se aplica la regla*/

      equalTo
      : "#password" /*id del input con el que debe coincidir*/

      }

      }

      });

      });



    • Tipo archivos admitidos
      Con "accept" controlamos los archivos que se van a subir al servidor.

      $(document).ready(function(){
      $("#formulario").validate({ /*sustituir "formulario" por el id de vuestro formulario*/

      rules: {

      archivo: { /*id del campo que se aplica la regla*/

      accept
      : "jpg|gif" /*extensiones aceptadas*/

      }

      }

      });

      });


Para terminar un ejemplo con varias reglas juntas:

$(document).ready(function(){
$("#formulario").validate({

rules: {

nombre: {

minlength
: 3,

maxlength
: 10

},

repetir_clave: {

equalTo
: "#clave"

},

imagen: {

accept
: "jpg|gif|png"

}

}

});

});



Toda la documentación sobre el plugin en: http://docs.jquery.com/Plugins/Validation

11 comentarios:

  1. Excelente Post! saludos!

    ResponderEliminar
  2. buen plugin pero el problema que encontre es que al recibir en mi mail los datos del formulario no salen bien los acentos,la web la tengo con utf-8 tienes idea que puede pasar?

    ResponderEliminar
  3. Tu problema no está relacionado con el plugin, es de servidor. Tienes que convertir los caracteres antes de enviarlos.
    Quizás esto te ayude:
    http://www.forosdelweb.com/f4/acentos-enviar-formulario-dreamweaver-e-mail-470665/

    ResponderEliminar
  4. hola , soy nueva utilizando jquery, tengo un formulario en el que controlo un rango de fechas atraves de una funcion javascript pero me gustaria inlcuirla dentro del validate, no se como hacerlo.. espero su ayuda gracias
    , saludos

    ResponderEliminar
  5. estoy creando un formulario con este exelente utilidad de jquery y lo que queria saber como validar una fecha.

    ResponderEliminar
  6. Excelente aportación!. Solo tengo una duda...como haces para cambiar el idioma de los mensajes?

    ResponderEliminar
  7. Hola gracias por la explicación con documentación, estaba pensando en modificar la libreria para cambiar el idioma, solo es cuestión de colocar la importación del archivo de idiomas posterior a la de la libreria de validación.

    Gracias nuevamente.

    ResponderEliminar
  8. hola que tal, muchas garcias, tengo una duda, si requiero quitar acentos y ñ que requeriria hacer? necesito que mi campo valide que el valor no tenga acentos.

    ResponderEliminar
  9. gracias por "EL kin"
    era tan facil cambiar el idioma, pero en la documentacion no lo encontré.

    saludos

    ResponderEliminar
  10. Hola, queria saber como se puede cambiar el idioma mediante los archivos que vienen en la carpeta localization. Lo declare luego de colocar la importacion del jquery.validate.pack.js pero no me lo toma. Hay que setearlo en algun otro lugar para que lo tome? Desde ya muchas gracias por su ayuda.

    ResponderEliminar
  11. Aunque se que este post tiene un año, voy a dejar la respuesta de cómo cambiar el idioma de los mensajes.
    rules:{
    nombre:{
    required:true,
    minlength:7
    }
    },
    messages:{/*Modificamos mensaje de error*/
    nombre:{
    required:"Campo Obligatorio",
    minlength:"3 caracteres min"
    }
    }

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.


Creative Commons License