Validacion de formularios con prototype

  • Sep
  • 17

2 comentarios! 301 palabras - 1 hits

validacion de formularios utilizando selectores css y prototype

Siempre he creído que la mejor manera de verificar los datos de un formulario consta de dos partes.

En primer lugar, una validación simple del lado del cliente mediante javascript, donde se comprueba que todos los campos requeridos contengan datos y que estos datos estén en el formato que se esperan.

La segunda parte del proceso se ejecuta en el servidor y se basa en comprobaciones mas estrictas donde se verifica la integridad de los datos.

Para la primera validación, la que se realiza en el lado del cliente antes de enviar ningún dato, existe muchas combinaciones, en este caso, veremos como hacerlo de forma muy simple ayudados de la librería prototype.

Lo primero que tenemos que hacer es diseñar nuestro formulario y decidir que campos necesitamos comprobar.

  1.  
  2.     <form action="." method="post" id="usrFrm" onsubmit="checkForm(this.id);">
  3.         <fieldset>
  4.             <legend>Datos del usuario</legend>
  5.                 <label for="name"><input type="text" id="name" class="required" value="nombre" /></label>
  6.                 <label for="email"><input type="text" id="email" class="required email" value="nombre" /></label>
  7.                 <label for="phone"><input type="text" id="phone" class="required numeric" value="nombre" /></label>
  8.                 <label for="url"><input type="text" id="url" class="required" value="nombre" /></label>
  9.         </fieldset>
  10.         <p><input type="submit" id="submit" value="Enviar" /></p>
  11.     </form>
  12.  

Como se puede ver, utilizo tres clases diferentes para marcar los campos del formulario, con la siguiente función podremos validar cada campo utilizando selectores css, es decir, se comprobara que todos los campos marcados con la clase “required” contengan datos, además, se comprobara el formato de los datos en los campos marcados como “email” o “numeric”,

  1.  
  2.     function checkForm(id) {
  3.         var error = false;
  4.         $$('form#'+id+' .required').each(function(node){
  5.             if (node.value == "") {
  6.                 error = true;
  7.                 node.style.background = "#F00";
  8.             }
  9.         });
  10.         $$('form#'+id+' .email').each(function(node){
  11.             if ((node.value.indexOf(".") > 2) && (node.value.indexOf("@") > 0)) {
  12.                 error = true;
  13.                 node.style.background = "#F00";
  14.             }
  15.         });
  16.         $$('form#'+id+' .numeric').each(function(node){
  17.             var strChars = "0123456789.-";
  18.             for (i = 0; i < node.value.length; i++) {
  19.                 strChar = node.value.charAt(i);
  20.                 if (strChars.indexOf(strChar) == -1) {
  21.                     error = true;
  22.                     node.style.background = "#F00";
  23.                 }
  24.             }
  25.         });
  26.         if (error == true) {
  27.             alert('Asegurate de rellenar todos los campos requeridos');
  28.         } else {
  29.                         $(id).submit();
  30.         }
  31.     }
  32.  

esta claro que no podemos basar la integridad de los datos en este tipo de comprobaciones, pero son un primer filtro que le da mas dinamismo a la aplicacion ya que permite al usuario corregir errores sin tener que esperar a las comprobaciones del servidor, que por norma suelen ser mas lentas.

2 comentarios

  • Oct
  • 13

# Escrito por Roberto Mitma hace 3 años, 5 meses

hola alex; Te cuento q’ estoy trabajando con un código parecido… a

<

form action=”.” method=”post” id=”usrFrm” onsubmit=”checkForm(this.id);”>

con css. Pero no con el ‘Id’ yo estoy usando el ‘class’, mi etiquieta ‘form’ queda así…

este es el código fuente html…

PruebaCalendario CONSULTAR RANGOS DE FECHAS

Fecha Inicio
<br>

Fecha Final&nbsp;
<br>

si le quito el atributo ‘class’ del ‘form’ funciona el ‘onsubmit’ pero si lo pongo funciona solo el class..




  • Feb
  • 28

# Escrito por Juanjo hace 3 años

Muchas gracias Alex, me ha sido de mucha utilidad.


Escribe tu comentario

Puedes utilizar este formulario para escribir tu opinion sobre esta entrada, no existe ningun tipo de limitacion a la hora de enviar opiniones, tan solo sigue unas reglas basicas de cortesia y todos estaremos mas contentos.

Puedes identificarte utilizando OpenID, solo tienes que introducir tu URL OpenID en el siguiente campo y pulsar el boton de validar.





Instrucciones para los comentarios

El simbolo * indica que se trata de un campo obligatorio.

Este sitio usa Markdown junto con Smartypants para educar los textos, tambien esta disponible para los comentarios.

A continuación os muestro algunas de las equivalencias:

  • [enlace de ejemplo](http://example.com/) resulta enlace de ejemplo.
  • **Texto en Negrita**
  • _Italica_
  • > blockquote
  • > > nested blockquote
  • * Esto es un elemento de una lista desordenada (ul)
  • 1. Esto es un elemento de una lista ordenada (ol)

MC Puedes seguir las respuestas a tus comentarios con MyComments.