jquery validate. It may be a bug in errorContainer and errorPlacement.

jquery validate. It may be a bug in errorContainer and errorPlacement.

Hi,
When I create a div as a container to display errors, they are displayed only if indicated in errorPlacement. It is not just the problem, as indicated in errorPlancement the div to display errors when passed validations, error messages do not disappear.

I tried it with jQuery 1.11.1, 1.12.1, 2.2.0 and jQuery-validations v 1.13.1, 1.14.0 and 1.15.0 with the same result.

  1. JS For Usuarios form
  2. /**
  3. * DEFAULT GLOBAL JQUERY VALIDATIONS
  4. */
  5. jQuery.validator.setDefaults({
  6.  debug: true,
  7.  ignore: "input[type=hidden]", //IGNORAR INPUTS OCULTOS
  8.  errorElement: "span",
  9.  errorClass: "has-error",
  10.  wrapper: "li",
  11.  errorContainer: $("#error_placeholder"),
  12.  errorLabelContainer: "#messageEerror ul",
  13.  errorPlacement: function ( error, element ) {
  14. error.insertAfter( "#error_placeholder" );
  15.  },
  16.  highlight: function ( element, errorClass, validClass ) {
  17.  $( element ).parents( ".form-group" ).addClass( "has-error" ).removeClass( "has-success" );
  18.  },
  19.  unhighlight: function (element, errorClass, validClass) {
  20.  $( element ).parents( ".form-group" ).addClass( "has-success" ).removeClass( "has-error" );
  21.  },
  22. });


  23. /**
  24.  * USUARIOS 
  25.  */
  26. var usuariosFrm = (function(){
  27. $(document).ready(function(){
  28. /**
  29. * REGLAS DE VALIDACION PARA EL FORMULARIO
  30. */
  31. $( "#usuarioFilter" ).validate( {
  32. rules: {
  33. usuarioId: "required",
  34. usuarioNombre: "required",
  35. username: {
  36. required: true,
  37. minlength: 2
  38. },
  39. usuarioApellido: {
  40. required: true,
  41. minlength: 5
  42. },
  43. departamento: {
  44. required: true
  45. },
  46. fechaAlta: {
  47. required: true,
  48. date: true
  49. }
  50. },
  51. messages: {
  52. usuarioId: {
  53. required: "ID usuario requerido"
  54. },
  55. usuarioNombre: {
  56. required: "Nombre usuario requerido"
  57. },
  58. usuarioApellido: {
  59. required: "Apellidos requerido"
  60. },
  61. departamento: {
  62. required: "Departamento requerido"
  63. },
  64. fechaAlta: {
  65. required: "Fecha alta requerida",
  66. date: "Entre una fecha correcta"
  67. }
  68. }
  69.  
  70. } );//FIN VALIDACIONES

  71. $("#btnSearch").on('click', function(){
  72. if($("#usuarioFilter").valid()){
  73. console.log("Formulario ha pasado correctamente las validaciones!");
  74. }else{
  75. console.log("Formulario NO ha pasado las validaciones!");
  76. }
  77. });
  78.         
  79. });
  80. })(jQuery);
And HTML
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  3. <head>
  4. <meta http-equiv="X-UA-Compatible" content="chrome=1">
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  6. <script type="text/javascript" src="jquery/1.11.1/js/jquery-1.11.1.js"></script>
  7. <script type="text/javascript" src="jquery-validations/1.15.0/js/jquery.validate.js"></script>

  8. <script type="text/javascript" src="usuarios/usuarios.js"></script>
  9. </head>
  10. <body>
  11. <div id="error_placeholder" class="alert alert-danger" role="alert">

  12. </div>

  13. <div id="filtro" class="collapse in">

  14. <form  id="usuarioFilter" name="usuarioFilter" class="well form-horizontal" 
  15. action=""
  16. onSubmit="return false;"
  17. >
  18. <fieldset>
  19. <div class="row-fluid">
  20. <div class="col-xs-4">
  21.    <div class="form-group">
  22.      <label for="usuarioId"><spring:message code="acciones.usuario.id.label"/></label>
  23.      <input type="text" id="usuarioId" name="usuarioId" class="form-control input-sm" 
  24.             placeholder="Identificador usuario" >
  25.    </div>
  26.    </div>

  27. <div class="col-xs-4">
  28.    <div class="form-group">
  29.      <label for="usuarioNombre"><spring:message code="acciones.usuario.nombre.label"/></label>
  30.      <input type="text" id="usuarioNombre" name="usuarioNombre" class="form-control input-sm" 
  31.             placeholder="Nombre usuario">
  32.    </div>
  33.    </div>
  34.    <div class="col-xs-4">
  35.    <div class="form-group">
  36.      <label for="usuarioApellido"><spring:message code="acciones.usuario.apellido.label"/></label>
  37.      <input type="text" id="usuarioApellido" name="usuarioApellido" class="form-control input-sm" 
  38.             placeholder="Apellido usuario">
  39.    </div>
  40.    </div>
  41. </div>

  42. <div class="row-fluid">
  43. <div class="col-xs-4">
  44.    <div class="form-group">
  45.      <label for="departamento"><spring:message code="acciones.usuario.depto.label"/></label>
  46.      <select id="departamentoSelect" name="departamentoSelect" class="form-control input-sm">
  47.        <option><spring:message code="option.select.escoger"/></option>
  48.      </select>
  49.    </div>
  50. </div>
  51. <div class="col-xs-4">
  52.    <div class="form-group">
  53.       <label for="fechaAlta"><spring:message code="acciones.usuario.fecha.alta.label"/></label>
  54.       <div id="fechaAltaCont">
  55. <div class="input-group date">
  56.  <input id="fechaAlta" name="fechaAlta" type="text" class="form-control input-sm" placeholder="dd/mm/aaaa">
  57.  <span class="input-group-addon">
  58.   <span class="glyphicon glyphicon-calendar"></span>
  59.  </span>
  60. </div>
  61.       </div>
  62. </div>
  63. </div>
  64. </div>    
  65. </fieldset>
  66.    </form>
  67. </div>
  68. <div>
  69. <button id="btnSearch" type="submit" title="buscar">buscar
  70. </button>

  71. </div>
  72. </body>
  73. </html>

Thanks in advace.

I put de zip test with jquery and jquery validate included.