Плагин jQuery Validation: отключить проверку для указанных кнопок отправки
У меня есть форма с несколькими полями, которые я проверяю (некоторые с методами, добавленными для выборочной проверки) с отличным плагином JQuery Validation от Jörn Zaeffere. Как вы обходите проверку с помощью указанных элементов управления отправкой (другими словами, проверка работоспособности с некоторыми сообщениями ввода, но не срабатывает проверка с другими)? Это будет похоже на ValidationGroups со стандартными контрольными элементами ASP.NET.
Моя ситуация:
Это с ASP.NET WebForms, но вы можете игнорировать это, если хотите. Тем не менее, я использую валидацию скорее как «рекомендацию»: другими словами, когда форма отправляется, выполняется проверка, но вместо отображения «требуемого» сообщения «рекомендация» показывает, что что-то говорит по строке «вы пропустили следующие поля … Вы все равно хотите продолжить? ” В этот момент в контейнере ошибок появляется другая кнопка отправки, которая может быть нажата, которая будет игнорировать проверку и отправить в любом случае. Как обходить формы .validate () для этой кнопки управления и по-прежнему сообщение?
- JQuery Проверять несколько полей с одной ошибкой
- Проверка ввода массива с использованием модуля проверки правильности jquery
- Проверять поля с помощью проверки JQuery без отправки?
- Проверка jQuery на разных языках
- Как мы можем указать правила для плагина проверки правильности jquery по classу?
Пример покупки и продажи дома по адресу http://jquery.bassistance.de/validate/demo/multipart/ позволяет использовать это для того, чтобы ударить предыдущие ссылки, но это делается путем создания пользовательских методов и добавления их в валидатор. Я бы предпочел не создавать собственные методы, дублирующие функциональные возможности уже в плагине проверки.
Ниже приведена сокращенная версия непосредственно применимого скрипта, который у меня есть прямо сейчас:
var container = $("# div.validationSuggestion"); $('#').validate({ errorContainer: container, errorLabelContainer: $("ul",container), rules: { : { required: true }, : { required: true } // etc. }, messages: { : 'A message.', : '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' });
- Проверка формы jQuery при нажатии кнопки
- Плагин проверки jQuery + equalTo не работает
- jQuery validator и настраиваемое правило, использующее AJAX
- Самостоятельное размещение ошибок плагина JQuery Validation
- jQuery validate: Как добавить правило для проверки правильности выражения?
- Плагин jQuery Validation не будет проверять, когда в обработчике событий click
- Ненавязчивая проверка в Chrome не будет проверяться с помощью dd / mm / yyyy
- Проверка FileExtension с помощью выборочной проверки создает дубликаты и недопустимые атрибуты data- *
Вы можете добавить class CSS cancel
к кнопке отправки, чтобы подавить проверку
например
См. Документацию jQuery Validator этой функции здесь: Пропуск проверки для отправки
EDIT :
Вышеупомянутый метод устарел и заменен атрибутом formnovalidate
.
Другой (недокументированный) способ сделать это – позвонить:
$("form").validate().cancelSubmit = true;
на событие щелчка кнопки (например).
Добавить атрибут formnovalidate для ввода
Добавление classа = «отмена» теперь устарело
См. Документы для проверки пропусков для отправки по этой ссылке.
Вы можете использовать опцию onsubmit: false (см. Документацию ) при подключении проверки, которая не будет проверяться при отправке формы. А затем в вашей asp: button добавьте OnClientClick = $ (‘# aspnetForm’). Valid (); чтобы явно проверить, действительна ли форма.
Вы можете назвать эту модель выбора, вместо отказа, описанного выше.
Обратите внимание: я также использую проверку jquery с помощью ASP.NET WebForms. Есть некоторые проблемы для навигации, но как только вы проходите через них, пользовательский опыт очень хорош.
Еще один (динамический) способ:
$("form").validate().settings.ignore = "*";
Чтобы снова включить его, мы просто возвращаем значение по умолчанию:
$("form").validate().settings.ignore = ":hidden";
Источник: https://github.com/jzaefferer/jquery-validation/issues/725#issuecomment-17601443
(Расширение @lepe
и @redsquare
для ASP.NET MVC
+ jquery.validate.unobtrusive.js
)
Плагин проверки jQuery (а не Microsoft ненавязчивый) позволяет вам помещать class .cancel
в кнопку отправки, чтобы полностью .cancel
проверку (как показано в принятом ответе).
To skip validation while still using a submit-button, add a class="cancel" to that input.
(не путайте это с помощью type='reset'
который является чем-то совершенно другим)
К сожалению, jquery.validation.unobtrusive.js
проверки правильности (ASP.NET MVC) вызывает зависание поведения по умолчанию jquery.validate .
Это то, что я придумал, чтобы вы могли поместить .cancel
на кнопку отправки, как показано выше. Если Microsoft когда-либо «исправляет» это, вы можете просто сохранить этот код.
// restore behavior of .cancel from jquery validate to allow submit button // to automatically bypass all jquery validation $(document).on('click', 'input[type=image].cancel,input[type=submit].cancel', function (evt) { // find parent form, cancel validation and submit it // cancelSubmit just prevents jQuery validation from kicking in $(this).closest('form').data("validator").cancelSubmit = true; $(this).closest('form').submit(); return false; });
Примечание. Если при первой попытке кажется, что это не работает – убедитесь, что вы не обращаетесь на сервер и не видите страницу сгенерированную сервером с ошибками. Вам нужно будет обойти проверку на стороне сервера другими способами – это просто позволяет форме отправить клиентскую сторону без ошибок (альтернатива будет добавлять атрибуты .ignore
ко всему в вашей форме).
(Примечание: вам может понадобиться добавить button
в селектор, если вы используете кнопки для отправки)
Этот вопрос старый, но я нашел другой способ – использовать $('#formId')[0].submit()
, который получает элемент dom вместо объекта jQuery, тем самым минуя любые проверки. Эта кнопка представляет родительскую форму, содержащую вход.
Кроме того, убедитесь, что у вас нет имени input
«submit», или оно отменяет функцию с именем submit
.
Я обнаружил, что наиболее гибким способом является использование JQuery:
event.preventDefault():
Например, если вместо отправки я хочу перенаправить, я могу сделать:
$("#redirectButton").click(function( event ) { event.preventDefault(); window.location.href='http://www.skip-submit.com'; });
или я могу отправить данные на другую конечную точку (например, если я хочу изменить действие):
$("#saveButton").click(function( event ) { event.preventDefault(); var postData = $('#myForm').serialize(); var jqxhr = $.post('http://www.another-end-point.com', postData ,function() { }).done(function() { alert("Data sent!"); }).fail(function(jqXHR, textStatus, errorThrown) { alert("Ooops, we have an error"); })
Когда вы выполните «event.preventDefault ();» вы обходите проверку.
$("form").validate().settings.ignore = "*";
Или
$("form").validate().cancelSubmit = true;
Но без успеха в пользовательском обязательном валидаторе. Для динамического вызова вызова я создал поддельную скрытую кнопку отправки с этим кодом:
var btn = form.children('input.cancel.fakeSubmitFormButton'); if (btn.length === 0) { btn = $(''); form.append(btn); } btn.click();
Теперь пропустите правильность проверки 🙂
У меня есть две кнопки для отправки формы, кнопка с именем save и exit обходит проверку:
$('.save_exist').on('click', function (event) { $('#MyformID').removeData('validator'); $('.form-control').removeClass('error'); $('.form-control').removeClass('required'); $("#loanApplication").validate().cancelSubmit = true; $('#loanApplication').submit(); event.preventDefault(); });