2009-03-20 12 views
12

IEでJavascriptでバックスペースを無効にしてキーを削除するにはどうすればよいですか?これは私のコードですが、IEではうまくいかず、Mozillaではうまくいくようです。IEでjavascriptを使用してバックスペースを無効にしてキーを削除する

onkeydown="return isNumberKey(event,this)" 

function isNumberKey(evt, obj) 
{ 

    var charCode = (evt.which) ? evt.which : evt.keyCode 
    if (charCode == 8 || charCode == 46) return false; 

    return true; 
} 
+0

まず、OnKeyUp/onKeyDownイベントとEventオブジェクトメンバーの内容を読みます。これにより、必要なすべてのデータが提供されます。 –

答えて

13

このイベントハンドラは、すべての主要なブラウザで機能します。

function onkeyup(e) { 
    var code; 
    if (!e) var e = window.event; // some browsers don't pass e, so get it from the window 
    if (e.keyCode) code = e.keyCode; // some browsers use e.keyCode 
    else if (e.which) code = e.which; // others use e.which 

    if (code == 8 || code == 46) 
     return false; 
} 

あなたが好きこの機能にイベントを添付することができます。

<input onkeyup="return onkeyup()" /> 
+4

Typo。 (コードコード –

5

更新@JoeCoderのコメントと私の答えの「outdatedness」に基づいて、私はそれを修正しました。

document.querySelector([text input element]).onkeydown = checkKey; 
function checkKey(e) { 
    e = e || event; 
    return !([8, 46].indexOf(e.which || e.keyCode || e.charCode) > -1); 
} 

は、このコードは、バックスペースアクションをキャンセルthis jsFiddle

+0

ええと、すべての大型ブラウザ(つまり、ff、safari、chrome、opera)でそのイベントの添付ファイルを使用していると確信しています。 – Joel

+0

jsFiddle(http ://jsfiddle.net/x9tnxqLt/2/)IE11、Firefox 35、またはChrome 40で動作するようにはできません。これはkeyupイベントをインターセプトしてコードを取得しますが、falseが返されてもブラウザはそのままです Joel Potterのコードが正しく動作しない – Dwayne

+0

古い答え:jsfiddle @ http://jsfiddle.net/KooiInc/9r6bvaLd/がうまくいくかもしれません。 – KooiInc

2
$(document).keydown(function(e) { 
    if (e.keyCode === 8) { 
     var element = e.target.nodeName.toLowerCase(); 
     if ((element != 'input' && element != 'textarea') || $(e.target).attr("readonly")) { 
      return false; 
     } 
    } 
}); 
2

も参照してください。

window.onkeydown = function (event) { 

    if (event.which == 8) { 

     event.preventDefault(); // turn off browser transition to the previous page 

       // put here code you need 

     }; 

};  
関連する問題