Mam formularz z wieloma polami, które sprawdzam (niektóre z dodanymi metodami do niestandardowej walidacji) z doskonałą wtyczką Jörn Zaeffere do walidacji jQuery. W jaki sposób można obejść walidację z określonymi kontrolami przesyłania (innymi słowy, zwalidować walidację z niektórymi danymi wejściowymi przesyłania, ale nie odpalić walidacji z innymi)? Byłoby to podobne do ValidationGroups ze standardowymi kontrolkami walidatora ASP.NET.
Moja sytuacja:
Jest z ASP.NET WebForms, ale możesz to zignorować, jeśli chcesz. Jednak używam walidacji bardziej jako „rekomendacji”: innymi słowy, kiedy formularz jest przesyłany, walidacja jest uruchamiana, ale zamiast wyświetlania komunikatu „wymagany”, „zalecenie” pokazuje, że mówi coś podobnego do „ty pominięto następujące pola… czy mimo wszystko chcesz kontynuować? ” W tym momencie w kontenerze błędów widoczny jest teraz kolejny przycisk przesyłania, który można nacisnąć, który zignoruje walidację i mimo wszystko wyśle. Jak obejść formularze .validate () dla tej kontrolki przycisku i nadal publikować?
Przykład Kup i sprzedaj dom pod adresem http://jquery.bassistance.de/validate/demo/multipart/ pozwala na to, aby przejść do poprzednich linków, ale robi to poprzez utworzenie własnych metod i dodanie ich do walidatora. Wolałbym nie tworzyć własnych metod powielających funkcjonalność już we wtyczce walidacyjnej.
Poniżej znajduje się skrócona wersja skryptu do natychmiastowego zastosowania, który mam w tej chwili:
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'
});