Ich habe ein Formular mit mehreren Feldern, das ich mit dem hervorragenden jQuery Validation-Plugin von Jörn Zaeffere validiere (einige mit Methoden zur benutzerdefinierten Validierung). Wie umgehen Sie die Validierung mit bestimmten Submit-Steuerelementen (mit anderen Worten, Brandvalidierung mit einigen Submit-Eingaben, aber keine Brandvalidierung mit anderen)? Dies ähnelt ValidationGroups mit Standard-ASP.NET-Validator-Steuerelementen.
Meine Situation:
Es ist mit ASP.NET WebForms, aber Sie können das ignorieren, wenn Sie möchten. Ich verwende die Validierung jedoch eher als "Empfehlung": Mit anderen Worten, wenn das Formular gesendet wird, wird die Validierung ausgelöst, aber anstelle einer "erforderlichen" Meldung wird eine "Empfehlung" angezeigt, die etwas in der Richtung von "Sie" sagt habe die folgenden Felder verpasst ... möchtest du trotzdem fortfahren? " An diesem Punkt im Fehlercontainer ist jetzt eine weitere Schaltfläche zum Senden sichtbar, die gedrückt werden kann, wodurch die Validierung ignoriert und trotzdem gesendet wird. Wie kann man die Formulare .validate () für diese Schaltflächensteuerung umgehen und trotzdem posten?
Das Beispiel "Haus kaufen und verkaufen" unter http://jquery.bassistance.de/validate/demo/multipart/ ermöglicht dies, um auf die vorherigen Links zuzugreifen. Dies geschieht jedoch durch Erstellen benutzerdefinierter Methoden und Hinzufügen zum Validator. Ich würde es vorziehen, keine benutzerdefinierten Methoden erstellen zu müssen, die bereits im Validierungs-Plugin Funktionen duplizieren.
Das Folgende ist eine verkürzte Version des sofort anwendbaren Skripts, das ich gerade habe:
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'
});