Jquery: запретить значение по умолчанию перед отправкой (дополнительная функциональность), но после успешной проверки

Перед отправкой формы мне нужно выполнить некоторые дополнительные функции (динамически добавлять скрытые поля в форму).

Но я также использую jQuery Validate. Как обеспечить выполнение приведенного ниже кода после успешной проверки jQuery (без ошибок), но до фактической отправки?

Я не хочу добавлять этот пользовательский обработчик непосредственно в блок jQuery Validate. Функциональность отправки на самом деле не связана с кодом проверки.

 // This handler should only be invoked after jQuery Validate successfully
 // completes with no errors, otherwise it should never get here
 $('#submitButton').click(function(e){
     e.preventDefault();
     myExtraCode();
     $('#formId').submit();
 });

Если вы создаете экземпляр проверки jQuery для элемента form (которым вы должны быть), то отправка формы будет происходить по умолчанию. Вам не нужно добавлять никаких дополнительных обработчиков кликов. Если вы хотите запустить некоторую настраиваемую логику при отправке формы, используйте свойство submitHandler проверки jQuery.

Rory McCrossan 10.08.2018 16:59

Ты уверен? Я бы подумал, что метод щелчка всегда срабатывает, несмотря ни на что, но я могу проверить ...

gene b. 10.08.2018 16:59

Было бы полезно увидеть, как вы настроили проверку jQuery, и образец формы HTML, если это необходимо.

Rory McCrossan 10.08.2018 17:00

То, что Рори только что пытался тебе сказать! Если вы используете jQuery Validate, то все, что вы помещаете в submitHandler этого плагина, происходит после действительная форма, но перед отправка. В этом весь смысл этого обработчика. Ваш пользовательский обработчик кликов совершенно не нужен и, скорее всего, будет мешать работе плагина. У вас также есть очень плохо составленный вопрос, в котором вы упустили почти весь соответствующий код; вызов .validate() и HTML формы?

Sparky 10.08.2018 17:38

Спарки, вот в чем проблема. Я не хочу использовать submitHandler () jQuery Validate. Это заставляет меня помещать несвязанный код в блок проверки, что в моем случае является сложным. Было бы проще, если бы я мог делать это вне блока валидации if $('#form').valid()) { ... } в моем пользовательском обработчике кнопок. Могу ли я сделать это?

gene b. 10.08.2018 17:53

Да, ты мог бы это сделать. Измените кнопку отправки на type="button", что предотвращает отправку. Затем используйте обработчик click на этом button. Затем поместите туда свой условный if .valid().... В конце вы можете запустить .submit(), который вернет его плагину для завершения отправки.

Sparky 10.08.2018 18:06
0
6
15
0

Другие вопросы по теме