43

Googleのホームページで、要素にフォーカスがない状態でBack Spaceキーを押すと、戻る代わりに検索ツールバーにフォーカスが移動することに注意してください。

どうすればこれを達成できますか?

私は自分のアプリのユーザーでこの問題に遭遇し続けています。それらはどの要素にも焦点を合わせておらず、アプリからそれらをスローするBACKSPACEを押します。

4

9 に答える 9

66

または:keydownの外側のバックスペースキーを処理している場合は、イベントハンドラーをバインドして、そのイベントのデフォルトのアクションを防止します。textareainput

$(document).on("keydown", function (e) {
    if (e.which === 8 && !$(e.target).is("input, textarea")) {
        e.preventDefault();
    }
});
于 2012-06-20T02:48:40.427 に答える
24

アンドリュー・ウィテカーの答えが本当に好きです。ただし、読み取り専用、ラジオ、またはチェックボックスの入力フィールドにフォーカスされている場合でも戻ることができ、contentEditable 要素ではバックスペースが許可されないため、わずかな変更を加えました。クレジットはアンドリュー・ウィテカーに行きます。

$(document).on("keydown", function (e) {
    if (e.which === 8 && !$(e.target).is("input:not([readonly]):not([type=radio]):not([type=checkbox]), textarea, [contentEditable], [contentEditable=true]")) {
        e.preventDefault();
    }
});

現時点では、[contentEditable] != [contentEditable=true] 以来、HTML にあるすべてのバリエーション [contentEditable] が必要なようです。

于 2012-12-07T03:31:42.807 に答える
11

Googleがこれを行う方法はちょっとクールです。バックスペースを押すと、テキスト フィールドがフォーカスされ、ユーザーが戻ることができなくなります。

同じことを試すことができます:

<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<input id="target" type="text" />

<script type="text/javascript">
$(document).keydown(function(e) { if (e.keyCode == 8) $('#target').focus(); });
</script>

デモ: http://jsfiddle.net/epinapala/TxG5p/

于 2012-06-20T02:53:12.320 に答える
1

単にナビゲートするのをやめるには、このコードが機能します!

$(document).on("keydown", function (event) {        
   if (event.keyCode === 8) {
      event.preventDefault();
    }
  });

しかし、これは入力フィールド タイプ text/textarea でも発生します。したがって、これらのフィールドを制限するには、次を使用できます

$(document).on("keydown", function (event) {
  if (event.which === 8 && !$(event.target).is("input, textarea")) {
   event.preventDefault();
  }
});

私の場合、カレンダー用のテキスト フィールドがあり、そのカレンダーをクリックするたびに、日付を選択してバックスペースを押すと、前のページに戻ります。そのフィールドだけを防ぐために、私は単に使用しました

$('#myField').on("keydown", function (event) {
  if (event.keyCode === 8 || event.which === 8) { 
   event.preventDefault(); 
  } 
});

私はいくつかを助けるために言及することを考えました;-)

于 2015-11-30T14:04:43.197 に答える
1

これは古いものですが、これらの回答では、ラジオ ボタンにフォーカスしたときにバックスペースやナビゲートを行うことができます。入力タイプもフィルタリングする必要があります。これに対する上記のすべての回答の功績:

$(document).on("keydown", function (e) {
    if (e.which === 8 && !$(e.target).is("input[type='text']:not([readonly]), textarea")) {
        e.preventDefault();
    }
});
于 2013-10-16T03:31:33.860 に答える
0

私はインターネット上で多くのコードスニペットを試しましたが、満足のいく結果は得られませんでした。IE (IE11) と Crome の新しいブラウザー バージョンは、以前のソリューションを壊しましたが、IE11 + Crome + Firefox で機能するものは次のとおりです。このコードはバックスペースを防ぎ、ユーザーはテキスト フィールドに入力した内容を失うことはありません。

window.addEventListener('keydown', function (e) {
    if (e.keyIdentifier === 'U+0008' || e.keyIdentifier === 'Backspace' || e.keyCode === '8' || document.activeElement !== 'text') {
        if (e.target === document.body) {
            e.preventDefault();
        }
    }
}, true);
于 2014-10-07T07:36:11.320 に答える