2013-02-17 5 views
31

jsが読み込まれた後に入力されるHTMLで、Enterキーが押されたときに検出します。単にEnterキーが押されたときに、私にできることを検出するためにjQuery 'on()'を使用してEnterキーを見る

$('#textfield').keydown(function (e){ 
    if(e.keyCode == 13){ 
     console.log('Enter was pressed'); 
    } 
}) 

は、このコードは()のために動作しますが、私はjQueryのキーが押されるたびにチェックされますので、それは効率的では心配しています。これについて何か非効率的なことはありますか?

$('body').on('keydown','#textfield', function(event) { 
    if (event.keyCode == 13) { 
    console.log('Enter was pressed'); 
    } 
} 
+4

号文字通り、物事の何千ものキーが押されたとき、それは海のドロップのようになるでしょうが起こる)(.on使用することができます。 – JJJ

+0

準備完了イベントのスクリプトを呼び出す – EnterJQ

答えて

45

あなたはどこにでもページ上のキー操作をキャプチャしたい場合 -

$(document).keypress(function(e) { 
    if(e.which == 13) { 
    // enter pressed 
    } 
}); 

それは本当に、ブラウザ上で任意の大きな負荷をかけていない、という事実については、すべてのキー入力のために、このチェックを心配しないでください。

1

実際には何も心配する必要はありません。ブラウザは既にそのイベントをバブリングしていますが、bodyによってトラップされ、委任されたイベントからセレクタを実行することはできますが、これはJQueryが実行するための深刻で難しい実際のチェックではありません。セレクタ。

+0

同意します。ところで、あなたは本当に選択肢がありません - キーにリスナーを追加する方法はありません(いいかもしれませんが)。 –

+0

...リスナーを単一のキーに追加する方法があったとしても、ブラウザは内部的にすべてのキー押しに反応してどのキーが押されたかを判断する必要があります。 – JJJ

8

あなたはまだ

$(document).off('keyup#textfield'); 

$(document).on('keyup#textfield', function(event) { 
    if (event.keyCode == 13) { 
     console.log('Enter was pressed'); 
    } 
}); 
+0

あなたは命の恩人です:) –

関連する問題