Catch submit перед проверкой HTML5
Есть ли способ уловить действие формы submit
перед шагами проверки HTML5?
Это то, что я пробовал:
HTML
<form method='post' >
<fieldset>
<input type='email' name='foo' required />
<input type='submit' />
</fieldset>
</form>
JQuery
$('form').submit(function() {
$('fieldset').addStyle('error');
return false;
})
Но submit
запускается только после прохождения проверки HTML5.
Ответы
Ответ 1
Нет, проверка HTML5 происходит до любого события отправки во всех браузерах, поэтому это невозможно, кроме изменения типа события, как щелчок на кнопке:
$('input[type="submit"]').on('click', function() {
$('fieldset').addClass('error');
});
FIDDLE
Ответ 2
Используйте jquery, чтобы отключить проверку в форме при первой загрузке страницы, чтобы вы могли предотвратить любую проверку до того, как ваш обработчик onsubmit
запустил:
$(document).ready(function(){
$('form').attr('novalidate','novalidate');
})
а затем в конце вашей функции onsubmit
вручную запустите проверку HTML5 в каждом из полей с помощью javascript (используя checkValidity()
)
Ответ 3
Измените кнопку
<input type='submit' />
на обычную кнопку
<input type='button' id="submit" />
И после этого просто запишите событие click и сделайте сам себе
$('#submit').on('click', function() {
$('fieldset').addStyle('error');
// if everything is ok
$('form').submit();
})