Catch submit перед проверкой HTML5 - программирование
Подтвердить что ты не робот

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.

4b9b3361

Ответ 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(); 
})