Después de un paro ‘blogero’, básicamente por disponer de poco tiempo, como es habitual, volvemos a la carga.

Hoy voy a intentar explicar un poco, como crearnos nuestro formulario con un validador hecho con jquery. Vale la pena disponer de un validador, así solo nos basta de referenciarlo en el documento y no repetir   el mismo código infitas veces.

Vamos al lio.

Lo primero de todo, será crear el formulario:

HTML:
  1. <form id="mi_formulario" action="index.php" method="POST"> Nombre <input id="user_name" name="user_name" type="text" />
  2. Apellidos <input id="user_surname" name="user_surname" type="text" />
  3. Comentario <textarea id="desc" name="desc"></textarea>
  4. <input id="submit_form" type="submit" value="enviar" /></form>

Una vez tengamos el formulario creado,  si pulsamos el botón de enviar, podremos enviarlo sin pasar ningún tipo de revisión, con lo cual, podríamos enviar el formulario vacio sin problema alguno.
Para intentar evitar la entrada de campos vacios empezaremos insertando en los campos que queramos validar, la clase ‘validacion’.

HTML:
  1. Nombre <input id="”user_name”" name="”user_name”" type="”text”" />
  2. Comentario <textarea id="”desc”" class="”validacion”" name="”desc”"></textarea>

Para que nos sirve insertar una clase en el campo? Pues muy sencillo, será como una marca que tiene el campo, que en javascript nos facilitara su búsqueda.

Antes de crear el javacript, vamos a crear la clase css que nos mostrara el aviso.
.focus{
border: 1px solid red;
}

Vamos a crear el javascript:

Como vamos a usar jquery, te recuerdo que deberás insertar el fichero jquery en el código. Para mas info de jquery.

JavaScript:
  1. $(document).ready(function(){
  2. // Variable de control del submit del formulario.
  3. var check = true;
  4.  
  5. // Damos al botón un evento al hacer click.
  6. $('# submit_form').click(function(){
  7. // Hacemos un each de todos los campos que tengan la clase validación.
  8. $('.validate').each(function(){
  9. // Eliminamos la clase foco del objecto, por si la tiene vinculada.
  10. $(this).removeClass(focus);
  11. if($(this).val() == ''){
  12. $(<strong>this</strong>).addClass("focus");
  13. check = false
  14. }
  15. });
  16. if(!check){
  17. return false;
  18. }
  19. });

Con esto ya lo tendríamos echo, aun así, es necesario que dentro del código php que se encargará de procesar los campos, que se validen de nuevo los campos y sobretodo, que se procesen los campos para evitar sql injections(en el caso que trabajemos con bd) o contra ataques en el servidor.

NOTA:
El ejemplo explicado es muy sencillo de utilizar. Podríamos complicarlo, por ejemplo, insertando un texto debajo de cada campo que no este lleno mostrando al usuario que el campo se debe rellenar. Tan solo deberíamos crear un campo oculto debajo de cada input con el nombre del campo _error y mostrarlo con el jquery. Ejemplo:
html

HTML:
  1. Nombre
  2. <input id="”user_name”" name="”user_name”" type="”text”" />
  3. <p id="user_name_error" class="”form_error”">Inserta el nombre</p>
  4.  
  5. Comentario<textarea id="”desc”" class="”validacion”" name="”desc”"></textarea>
  6. <p id="desc_error" class="”form_error”">Inserta una descripcion</p>

css:

CSS:
  1. .form_error{
  2. background:url('../images/bullet_error.png') no-repeat;
  3. padding-left:1.5em;
  4. color: #cc0000;
  5. display: none;
  6. }

js:

JavaScript:
  1. $(document).ready(function(){
  2. var  check = true;
  3.  
  4. $('# submit_form').click(function(){
  5. $('.validate').each(function(){
  6. //Escondemos todos los avisos.
  7. $('.form_error').hide();
  8. // Eliminamos la clase foco del objecto, por si la tiene vinculada.
  9. $(this).removeClass(focus);
  10. if($(this).val() == ''){
  11. var field_name = $(this).attr(name);
  12. $(this).addClass("focus");
  13. $('#'+field_name+'_error').fadeIn('slow');
  14. check = false;
  15. }
  16. });
  17. if(!check){
  18. return false;
  19. }
  20. });