Ho un modulo con più campi che sto convalidando (alcuni con metodi aggiunti per la convalida personalizzata) con l'eccellente plug-in di convalida jQuery di Jörn Zaeffere. Come eludere la convalida con i controlli di invio specificati (in altre parole, attivare la convalida con alcuni input di invio, ma non attivare la convalida con altri)? Questo sarebbe simile a ValidationGroups con controlli validatori ASP.NET standard.
La mia situazione:
È con ASP.NET WebForms, ma puoi ignorarlo se lo desideri. Tuttavia, sto usando la convalida più come una "raccomandazione": in altre parole, quando viene inviato il modulo, viene avviata la convalida ma invece di visualizzare un messaggio "obbligatorio", una "raccomandazione" mostra che dice qualcosa sulla linea di "te mancati i seguenti campi .... vuoi procedere comunque? " A quel punto nel contenitore degli errori è ora visibile un altro pulsante di invio che può essere premuto per ignorare la convalida e inviare comunque. Come aggirare i moduli .validate () per questo controllo pulsante e pubblicare ancora?
L'esempio Buy and Sell a House su http://jquery.bassistance.de/validate/demo/multipart/ consente questo per colpire i collegamenti precedenti, ma lo fa attraverso la creazione di metodi personalizzati e l'aggiunta al validatore. Preferirei non dover creare metodi personalizzati duplicando la funzionalità già nel plugin di validazione.
La seguente è una versione abbreviata dello script immediatamente applicabile che ho in questo momento:
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'
});