7

ユーザーが削除ボタンを押した場合にアクションを実行する関数 (以下) を呼び出しています。正常に動作していますが、ユーザーが入力しているとき (入力内またはテキストエリア内) ではなく、ページ上でのみ行う必要があります。

$(window).keydown(function (evt) {
    if (evt.which == 46) { // delete
        goDoSomething();
    }
});

ユーザーが または であるかどうかのアイデアはhow I can amend the aboveありますか?not fireininputtextarea

前もって感謝します、

デイブ

4

3 に答える 3

15

evt.target のタイプを確認します。

$(window).keydown(function (evt) {
    if (evt.target.tagName.toLowerCase() !== 'input' &&
        evt.target.tagName.toLowerCase() !== 'textarea' && evt.which == 46) { // delete
        goDoSomething();
    }
});
于 2013-02-28T11:32:34.713 に答える
0

グローバル変数を使用して、テキストボックスがフォーカスされているときにそれを何かに設定し、ぼかしでリセットすることができます。このようなもの:

var textboxSelected = false;

$(":input").focus(function () {
     textboxSelected = true;
});
$(":input").blur(function () {
     textboxSelected = false;
});

次に、onKeyDownイベントで、残りの機能を実行する前に、変数がfalseに設定されているかどうかを確認します。

$(window).keydown(function (evt) {
if (evt.which == 46 && textboxSelected == false) {

    goDoSomething();
}
});
于 2013-02-28T11:35:28.710 に答える
0

次のようにしてみてください:

$(window).keydown(function (evt) {
  if(evt.target != $('input') && evt.target != $('textarea')){
     if (evt.which == 46) { // delete
        goDoSomething();
     }
  }
});
于 2013-02-28T11:39:39.290 に答える