2011-06-03 43 views
6

Actualmente tengo un formulario dentro de un marco de lightbox en mi página web. Cuando un usuario envía el formulario con datos no válidos, aparece un div con una lista de errores de formulario en la parte superior del formulario. El problema es: necesito algún tipo de devolución de llamada de validación jQuery para cambiar el tamaño de la caja de luz después de que aparezca el error div. Por lo que yo sé, no hay forma de hacer esto con el lightbox jQuery.jQuery Validación Callback Function

+0

Qué quiere decir una caja de luz iframe? ¿Estás validando el formulario usando un plugin o tu propio script? – Jon

Respuesta

17

que se les suministre la función de devolución de llamada no válida que se puede encontrar documented here, al igual que

$(".selector").validate({ 
    invalidHandler: function(form, validator) { 
     var errors = validator.numberOfInvalids(); 
     if (errors) { 
      //resize code goes here 
     } 
    } 
}) 
+0

Supongo que no se me ocurrió manejar todo el error de visualización y ubicación dentro de la función invalidHandler. ¡Gracias! –

+0

su bienvenida para ayudar – mcgrailm

+0

cómo adjuntaría este controlador después de que '.validate' ya se haya inicializado/llamado? – Maslow

2

Como alternativa, puede utilizar la función de devolución de llamada errorPlacement con el fin de actuar sobre el elemento específico que ha fallado la validación. A modo de ejemplo, el código siguiente se utiliza la devolución de llamada errorPlacement para establecer la clase de etiqueta div padres de cada elemento de formulario no válido a un "error" y luego elimina la clase de "error" una vez que el elemento pasa la validación:

form.validate({ 
     rules: { 
      Name: { 
       required: true 
      }, 
      Email: { 
       required: true 
       , regex: "^[0-9a-zA-Z.+_\-][email protected]{1}[0-9a-zA-Z.+_\-]+\\.+[a-zA-Z]{2,4}$" 
      } 
     }, 
     messages: { 
      Name: { 
       required: "Please give us your name" 
      }, 
      Email: { 
       regex: "Please enter a valid email address" 
      } 
     }, 

     errorPlacement: function(error, element) { 
      element.parent().addClass("error"); 
     }, 

     success: function(element) { 
      $("#" + element.attr("for")).parent().removeClass("error"); 
     } 
    });