Opera не проходит проверку полей на submit () с помощью protectDefault () - PullRequest
1 голос
/ 01 апреля 2012

Я хотел использовать проверку формы HTML5 вместе с отправкой формы ajax. После того, как форма отправки должна быть заменена другим содержимым, используя prepend (), show () или что-то в этом роде.

Я проверял функции submit () и validate () и придумал следующее:

$("#form").submit(function(e){
    e.preventDefault();

    $.post('sendmail.php', { name: $("#form-field-name").val(), email: $("#form-field-email").val(), message: $("#form-field-message").val()} );

   // now prepend the new "sucessfully sent" div
});

Похоже, e.preventDefault(); отключает проверку формы в Opera, она отлично работает в Firefox / Chrome.

Есть идеи? Это ошибка jQuery / Opera, или, может быть, в очередной раз Opera делает все правильно, а остальные нет?

Пример: http://jsfiddle.net/gw3My/

1 Ответ

1 голос
/ 01 апреля 2012

Это похоже на причуду в Опере. Не уверен, какой браузер правильный, но эта страница объясняет причуду и предлагает обходной путь, используя this.checkValidity(). Адаптируйте его под свои нужды.

Согласно этой странице , эта странность будет исправлена ​​в Opera 12.

CORE-35849 Отправка события по ошибке до проверки на стороне клиента в формах HTML5

...