2010-05-04 18 views
7

Actualmente estoy configurando el complemento de validación jQuery para usar en nuestro proyecto.Personalización de delegados de eventos en el complemento de validación de jQuery

De forma predeterminada, hay algunos eventos configurados automáticamente para el manejo. Es decir. enfocar adentro/afuera, eventos clave en todas las entradas de validación de fuego. Quiero que solo se active cuando se hace clic en el botón Enviar.

Esta funcionalidad parece estar incorporada en el complemento, lo que dificulta la tarea (sin modificar el código del complemento, No es lo que quiero hacer).

he encontrado la función eventDelegate llama en el método de código del plugin prototipo:

 $(this.currentForm) 
      .validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate) 
      .validateDelegate(":radio, :checkbox, select, option", "click", delegate); 

Cuando quito estas líneas desde el plugin consigo mi resultado, sin embargo, me gustaría mucho hacer algo fuera de la clavija -en lograr esto

¿Alguien puede ayudarme? Si necesita más detalles, hágamelo saber. He buscado en google con poco éxito.

Gracias

EDITAR: Básicamente estoy tratando de validar el formulario sólo cuando se dispara el evento de presentar. De manera predeterminada, el complemento se valida cada vez que se pierde el foco en un control de entrada.

Respuesta

7

Encontré la respuesta. Estaba (¿oculto?) Como parte de las opciones en el método de validar.

ver las opciones onfocusout etc en esta página: http://docs.jquery.com/Plugins/Validation/validate#options

que puedo establecido en false.

Aquí está mi código que establece mi validador (es de esperar que otros se encuentran este útil):

$(document).ready(function() { 
    $("form").each(function() { 
     $(this).validate({ 
      validateDelegate: function() { }, 
      onsubmit: true, 
      onkeydown: false, 
      onkeyup: false, 
      onfocusin: false, 
      onfocusout: false, 

      errorContainer: "#PanelError", 
      errorLabelContainer: "#PanelError ul", 
      wrapper: "li", 
      ignoreTitle: true, 
      errorClass: "Error", 

      highlight: function(element, errorClass, validClass) { 
       $(element).addClass(errorClass).removeClass(validClass); 
       $(element.form).find("#" + element.id) 
         .addClass(errorClass); 
      }, 
      unhighlight: function(element, errorClass, validClass) { 
       $(element).removeClass(errorClass).addClass(validClass); 
       $(element.form).find("#" + element.id) 
         .removeClass(errorClass); 
      } 
     }); 
    }); 
}); 
Cuestiones relacionadas