Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/04/2013, 06:59
rbczgz
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Función incompleta para validar formularios

Hola amig@s,

Tengo la siguiente función para validar formularios de forma genérica, el problema es que no toma en cuenta los select, es decir, aunque no se seleccione nada en un select "marcado" como requerido, lo da como bueno, aquí la función:

Código Javascript:
Ver original
  1. function validarFormGenerico( form ) {
  2.  
  3.   var error = false;
  4.   var j     = -1;
  5.   var chain = '';
  6.  
  7.   for ( var i = 0; i < form.elements.length; i++ ) {
  8.     if ( form.elements[i].alt == 'requerido' && ( isEmpty(Trim(form.elements[i].value)) || ( form.elements[i].type == 'checkbox' && form.elements[i].checked == false ) ) ) {
  9.       if ( j < 0 ) {
  10.         j   = i;
  11.       }
  12.       chain = chain +' - ' + form.elements[i].title + '\n';
  13.       error = true;
  14.     }
  15.   }
  16.  
  17.   if ( error ) {
  18.     alert( 'Los siguientes campos no pueden quedar\nincompletos para enviar el formulario:\n\n' + chain );
  19.     form.elements[j].focus();
  20.     return false;
  21.   }
  22.   else {
  23.     return true;
  24.   }
  25. }


Bien, un ejemplo de formulario para usar con esta función sería algo así (solo es un ejemplo):

Código HTML:
Ver original
  1. <form enctype="multipart/form-data" method="post" action="xxxxx.php" name="formulario">
  2. <table border=0 align="center">
  3. <tr>
  4. <td>Nombre:</td>
  5. <td><input type="text" name="nombre" id="nombre" alt="requerido" title="Nombre"></td>
  6. </tr>
  7. <tr>
  8. <td>Apellidos:</td>
  9. <td><input type="text" name="apellidos" id="apellidos" alt="requerido" title="Apellidos"></td>
  10. </tr>
  11. <tr>
  12. <td>E-mail:</td>
  13. <td><input type="text" name="email" id="email" alt="requerido" title="E-mail"></td>
  14. </tr>
  15. <tr>
  16. <td>Teléfono:</td>
  17. <td><input type="text" name="telefono" id="telefono" class="input" alt="requerido" title="Teléfono"></td>
  18. </tr>
  19. <tr>
  20. <td class=dato">País:</td>
  21. <td class="campo"><select name="pais" id="pais" class="input" alt="requerido" title="País">
  22. <option value="">-- Elige una opción --</option>
  23. <option value="País 1">País 1</option>
  24. <option value="País 2">País 2</option>
  25. <option value="País 3">País 3</option>
  26. <option value="País 4">País 4</option>
  27. <option value="País 5">País 5</option>
  28. <option value="País 6">País 6</option>
  29. </td>
  30. </tr>
  31. <tr>
  32. <td>Sexo:</td>
  33. <td><select name="sexo" id="sexo" alt="requerido" title="Sexo">
  34. <option value="">- Elige -</option>
  35. <option value="Hombre">Hombre</option>
  36. <option value="Mujer">Mujer</option>
  37. </td>
  38. </tr>
  39. <tr>
  40. <td>Suscripción al boletín: </td>
  41. <td><input type="checkbox" name="boletin" id="boletin" alt="requerido" title="Boletín" value="Boletín"></td>
  42. </tr>
  43. <tr>
  44. <td>Suscripción a las novedades: </td>
  45. <td><input type="checkbox" name="novedades" id="novedades" alt="requerido" title="Novedades" value="Novedades"></td>
  46. </tr>
  47. <tr>
  48. <td>Recibir e-mail: </td>
  49. <td><input type="radio" value="si" name="recibir_email" id="recibir_email" alt="requerido" title="Recibir e-mail"><input type="radio" value="No" name="recibir_email" id="recibir_email" alt="requerido" title="Recibir e-mail"> No</td>
  50. </tr>
  51. <tr>
  52. <td colspan="2">Se admiten archivos en formato pdf, doc o docx y con un tamaño no superior a 1 Mb</td>
  53. </tr>
  54. <tr>
  55. <td>Archivo:</td>
  56. <td><input type="file" name="archivo" id="archivo" alt="requerido" title="Archivo"></td>
  57. </tr>
  58. <tr>
  59. <td>Comentarios:</td>
  60. <td><textarea name="comentarios" cols="60" rows="6" id="comentarios" alt="requerido" title="Comentarios"></textarea>
  61. </td>
  62. </tr>
  63. <tr>
  64. <td colspan="2" align="center"><div align='center' class='aceptar'><input type="button" value="Enviar" onclick="javascript:validarFormGenerico(document.formulario);" alt="enviar" title="enviar"/>
  65. </td>
  66. </tr>
  67. </form>

Entonces, la pregunta es ¿qué habría que añadir para que valide todo tipo de campos?

Muchas gracias por anticipado.

.