10

私が試しているのは、すべてのフォーム送信イベントをキャッチし、action属性からURLを取得し、それを使用してAJAXを使用してフォームのコンテンツをそのアドレスに送信することです。したがって、必要なのは、送信イベントハンドラーの1つだけです。しかし、IEでは動作していないようで、すぐに困りました。

$(document).submit(function(e) {
        alert('clicked');
        e.preventDefault();
    });  

これは、クロスブラウザテストの目的で使用するコードです。Chrome、Firefoxでは完全に機能しますが、IEでは機能しません。ドキュメントにイベントリスナーを設定することはできませんか?

4

3 に答える 3

25

jQueryAPIを見てください。

JavaScript送信イベントはInternetExplorerでバブルしません。ただし、送信イベントでのイベント委任に依存するスクリプトは、イベントの動作を正規化したjQuery 1.4以降、ブラウザー間で一貫して機能します。(api.jquery.com/submit

submitInternet Explorerではイベントがバブルしないため、document要素にイベントが通知されることはありませんsubmit。jQueryはこれを正規化しますが、イベント委任を使用する場合に限ります。これを行うのは難しくありません。実際、コードがより複雑な場合は、コードがより適切になる可能性があります。

$(document).on('submit', 'form', function(e) {
    alert('clicked');
    e.preventDefault();
});

これにより、IEで可能にする一方で、バインドの利点document(たとえば、まだ存在しない要素のイベントをキャプチャする)が維持されます。thisイベントハンドラー内のは、formではなく要素になっていることに注意してくださいdocument

于 2012-06-23T20:46:05.000 に答える
3

リスナーをフォームに添付します

$("form").submit(function(e) {
        alert('clicked');
        e.preventDefault();
}); 
于 2012-06-23T20:42:08.793 に答える
3

どうですか:

$("form").submit(function(e) {
    alert('clicked');
    e.preventDefault();
});
于 2012-06-23T20:42:16.933 に答える