Tengo un formulario con varios campos que estoy validando (algunos con métodos agregados para la validación personalizada) con el excelente complemento de validación jQuery de Jörn Zaeffere. ¿Cómo se evita la validación con controles de envío específicos (en otras palabras, se activa la validación con algunas entradas de envío, pero no se activa la validación con otras)? Esto sería similar a ValidationGroups con controles de validación ASP.NET estándar.
Mi situación:
Es con ASP.NET WebForms, pero puede ignorarlo si lo desea. Sin embargo, estoy usando la validación más como una "recomendación": en otras palabras, cuando se envía el formulario, la validación se dispara pero en lugar de mostrar un mensaje "obligatorio", una "recomendación" muestra que dice algo como "usted" omitió los siguientes campos ... ¿desea continuar de todos modos? " En ese punto en el contenedor de errores, ahora hay otro botón de envío visible que se puede presionar, lo que ignoraría la validación y el envío de todos modos. ¿Cómo eludir los formularios .validate () para este control de botón y aún publicar?
La muestra Comprar y vender una casa en http://jquery.bassistance.de/validate/demo/multipart/ permite esto para acceder a los enlaces anteriores, pero lo hace mediante la creación de métodos personalizados y agregándolo al validador. Preferiría no tener que crear métodos personalizados que dupliquen la funcionalidad ya en el complemento de validación.
La siguiente es una versión abreviada del script inmediatamente aplicable que tengo ahora:
var container = $("#<%= Form.ClientID %> div.validationSuggestion");
$('#<%= Form.ClientID %>').validate({
errorContainer: container,
errorLabelContainer: $("ul",container),
rules: {
<%= YesNo.UniqueID %>: { required: true },
<%= ShortText.UniqueID %>: { required: true } // etc.
},
messages: {
<%= YesNo.UniqueID %>: 'A message.',
<%= ShortText.UniqueID %>: 'Another message.' // etc.
},
highlight: function(element, errorClass) {
$(element).addClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").removeClass("valid");
},
unhighlight: function(element, errorClass) {
$(element).removeClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").addClass("valid");
},
wrapper: 'li'
});