Плагин проверки jQuery: отключить проверку для указанных кнопок отправки - PullRequest
157 голосов
/ 15 октября 2008

У меня есть форма с несколькими полями, которые я проверяю (некоторые с добавленными методами для пользовательской проверки) с помощью превосходного плагина JQuery Validation от Jörn Zaeffere. Как вы обходите проверку с помощью указанных элементов управления отправкой (другими словами, проверку запуска с одними входными данными отправки, но не проверку с другими)? Это будет похоже на ValidationGroups со стандартными элементами управления валидатора ASP.NET.

Моя ситуация:

Это с ASP.NET WebForms, но вы можете игнорировать это, если хотите. Тем не менее, я использую проверку больше как «рекомендацию»: другими словами, когда форма отправляется, проверка запускается, но вместо «требуемого» сообщения отображается «рекомендация», которая говорит что-то вроде «вы». пропустил следующие поля .... вы хотите продолжить? " В этот момент в контейнере ошибок есть еще одна видимая кнопка отправки, которую можно нажать, чтобы игнорировать проверку и отправлять в любом случае. Как обойти формы .validate () для этой кнопки управления и до сих пор публиковать?

Пример «Купи и продай дом» по адресу http://jquery.bassistance.de/validate/demo/multipart/ позволяет сделать это, чтобы перейти к предыдущим ссылкам, но делает это путем создания пользовательских методов и добавления их в валидатор. Я бы предпочел не создавать собственные методы, дублирующие функциональность, уже в плагине проверки.

Ниже приведена сокращенная версия непосредственно применимого скрипта, который я получил прямо сейчас:

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'
}); 

Ответы [ 11 ]

0 голосов
/ 01 ноября 2018

Вот самая простая версия, надеюсь, она кому-нибудь поможет,

$('#cancel-button').click(function() {
    var $form = $(this).closest('form');
    $form.find('*[data-validation]').attr('data-validation', null);
    $form.get(0).submit();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...