10

私のページにはたくさんの重要なイベントがあります。各イベントを個別に無効にするのではなく、ページにあるすべてのkeyup / keydown/keypressedイベントを無効にする方法はありますか。javascript/jqueryを使用した解決策を探しています。

ありがとう!!

4

7 に答える 7

16

この方法でそれを行うことができますが、大きなページではひどく遅くなる可能性があります。

$('*').off('keyup keydown keypress');

これにより、ページ上のすべての要素が選択され、それらにバインドされている、、、およびイベントがkeyupすべてkeydown削除されます。keypress

ユーザーがbackspaceキーを使用して前のページに移動できないようにする場合は、次のコードを試すことができます。

var inputTags = ['INPUT', 'TEXTAREA'];

$(document).on('keypress', function(e) {
    if(e.which === 8 && $.inArray(e.target.tagName, inputTags) === -1)
        e.preventDefault();
});

これにより、フォーカスがテキストを入力できる入力要素(<input type="text">または<textarea>)である場合を除いて、バックスペースキーの使用が制限されます。

この実用的なデモをご覧ください。

于 2013-03-06T10:55:15.180 に答える
3

試す

$(document).find('*').off('keyup keydown keypressed');

そして、これをブロックに入れる必要があります。$(document).ready()ページにすべてのJSをロードした後(</body>たとえば、タグの前)。

于 2013-03-06T10:56:31.573 に答える
2

あなたはそれを解決するためにpreventDefault()関数を使用することができます

于 2013-03-06T10:59:10.603 に答える
2

$('*')。unbind('keyup keydown keypress')

于 2013-03-06T11:01:30.557 に答える
0

私にとってこの組み合わせで働いた:

キープレスイベントをオンにする

$(document).keypress(function(){
// Code
});

そして、このイベントをオフにするために私は使用しました:

$(document).off('keypress');

于 2017-04-05T10:33:23.550 に答える
0

$(elem).off('keypress.jstree')

ツリーノードに編集機能を追加していたので、最近これにも苦労しました。keypress.jstreeソースを見ると、500msのタイムアウトでバインドされているイベントがあることに気づきました。

ツリーを初期化した後に上記のバインディングを追加するだけoffで、すべての問題が一度に解決されました。これは、静的なツリー構造と、ajaxデータがロードされたツリーの両方で機能します。私が現在使用しているバージョンは3.3.5です。

お役に立てれば。

于 2019-01-21T14:07:14.180 に答える
-1

このコードは、substrを使用して、TextBox2で最後に押されたキーを削除します。

 `$("#TextBox2").val($("#TextBox2").val().substr(0, ($("#TextBox2").val().length-1)));`
  //removes last letter pressed.
于 2015-09-20T13:37:40.030 に答える