2009-10-28 32 views
6

Enterキーを押して関数を実行するためのe.which of jqueryを使用していますが、特定の入力フィールドがフォーカスされているカーソルが点滅します)。e.if入力フィールドのフォーカスが有効な場合のみEnterキーが有効になる

私の現在のjquery関数です。

$(document).keyup(function(e) { 
    if (e.which == 13) { 
     var page = $("#userpage").val(); 

     if(page > 0) { 
      $("#search").click(); 
     } else { 
      $('.save').click(); 
     } 
    } 
}); 

私が欲しいのは$( "#検索")。は、#search_textがフォーカスされているか入力がある場合にのみ呼び出されます。これは、入力フィールドがもう少し少なくなり、ユーザーがenterを押す傾向があり、Enterを押すと呼び出されます。

ありがとうございます。

答えて

9

私は、その特定の入力要素にイベントリスナーを添付します:

$('#search_text').keyup(function(e) { 
    if (e.which == 13) { 
     // do it 
    } 
}); 
+1

私は同意するが、それはすぐに起動しますので、 'keypress'イベントではなく、' keyup'イベントを使用することをお勧めしても、すべての主要なブラウザで印刷可能な文字のための信頼性の高い文字コードを持っています。 –

0

文書全体ではなく#search_text要素のイベントをバインドします。そうすれば、要素にフォーカスがあるときにのみトリガされます。

1

ちょうどあなたの二 if文の内側にあなたの関数に次の行を追加します

$('#search_text').focus(function() 
-1

あなたはまた、追加する必要があります:e.preventDefault();

$('document').keyup(function(e) { 
    if (e.keyCode == '13') { 
    e.preventDefault(); 
    var page = $("#userpage").val(); 
    } 
}); 
+0

文字列 ''document''を与えるjQueryを呼び出すと、イベントがドキュメント要素に付加されません。代わりに '$(document)'を使う必要があります。また、 'preventDefault()'を呼び出すと、以降のすべての「デフォルト」イベントはそれ以上トリガされません。 –

関連する問題