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がそれを正しく行っており、残りはそうではありませんか?
回答:
回答№1は1これはOperaの奇妙な動作のようです。どのブラウザが正しいのかわかりませんが、 このページ 癖を説明し、を使用して回避策を提案します this.checkValidity()
。ニーズに合わせて調整してください。
による このページ、この癖はOpera 12で修正されます。
CORE-35849 HTML5フォームでクライアント側の検証の前に誤ってイベントを送信する