私のページにはたくさんの重要なイベントがあります。各イベントを個別に無効にするのではなく、ページにあるすべてのkeyup / keydown/keypressedイベントを無効にする方法はありますか。javascript/jqueryを使用した解決策を探しています。
ありがとう!!
私のページにはたくさんの重要なイベントがあります。各イベントを個別に無効にするのではなく、ページにあるすべてのkeyup / keydown/keypressedイベントを無効にする方法はありますか。javascript/jqueryを使用した解決策を探しています。
ありがとう!!
この方法でそれを行うことができますが、大きなページではひどく遅くなる可能性があります。
$('*').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>
)である場合を除いて、バックスペースキーの使用が制限されます。
この実用的なデモをご覧ください。
試す
$(document).find('*').off('keyup keydown keypressed');
そして、これをブロックに入れる必要があります。$(document).ready()
ページにすべてのJSをロードした後(</body>
たとえば、タグの前)。
あなたはそれを解決するためにpreventDefault()関数を使用することができます
$('*')。unbind('keyup keydown keypress')
私にとってこの組み合わせで働いた:
キープレスイベントをオンにする
$(document).keypress(function(){
// Code
});
そして、このイベントをオフにするために私は使用しました:
$(document).off('keypress');
$(elem).off('keypress.jstree')
ツリーノードに編集機能を追加していたので、最近これにも苦労しました。keypress.jstree
ソースを見ると、500msのタイムアウトでバインドされているイベントがあることに気づきました。
ツリーを初期化した後に上記のバインディングを追加するだけoff
で、すべての問題が一度に解決されました。これは、静的なツリー構造と、ajaxデータがロードされたツリーの両方で機能します。私が現在使用しているバージョンは3.3.5です。
お役に立てれば。
このコードは、substrを使用して、TextBox2で最後に押されたキーを削除します。
`$("#TextBox2").val($("#TextBox2").val().substr(0, ($("#TextBox2").val().length-1)));`
//removes last letter pressed.