2

フォームがあるページがあり、jquery イベント ハンドラーをアタッチして、キーボードの Enter キーを押してこのフォームを送信します。

//Submit form when enter pressed
$(document).keypress(function (e) {
    if (e.which == 13) {
        $('form').submit();
    }
});

同じページで jquery ui dialog() を使用してモーダルを表示することもできます。モーダル (dialog() が呼び出されるまで非表示の div です) にはボタンがあり、ユーザーがキーボードで Enter キーを押したときにボタンを「クリック」できるようにしたいと考えています。私が抱えている問題は、ページで以前と同じイベントハンドラーを使用すると、フォームの送信とボタンのクリックの両方が行われることです。

2 番目のイベント ハンドラーがモーダルに制限され、ドキュメントの残りの部分には反映されないようにするにはどうすればよいですか? そのシナリオでは機能しない e.stopPropagation を試しました。

//Handler on the modal
$(document).keypress(function(e) {
    e.stopPropagation();
    if($('#button-doc-validate').is(':visible') && e.which == 13) {
        //Click the button
        $('#button-doc-validate').click();
    }
});
4

2 に答える 2

1

for submit を使用してフォームを処理する場合 (enter キープレスを処理します)、モーダルで keypress イベント ハンドラーをバインドして、2 つの異なるキープレスを分離することができます。

$('form').submit(function(){}) //- will handle enter keypress and form submit action

$('modal').keypress(function(){}); //- will handle the keypress inside the modal 

したがって、Enterキーの押下は分離されます

http://jsfiddle.net/KMAYv/

于 2012-11-20T15:47:40.327 に答える