バックスペース キーを完全に防止するのは得策ではないかもしれません。入力ミスをテキスト ボックスで修正したいとします。したがって、誰かがテキスト入力を入力していない場合にのみ、バックスペースを無効にする必要があります!
これは、すべての主要なブラウザーで機能する可能性があります。
document.onkeydown = function (e) {
e = e || window.event;
if (e.keyCode == 8) { // Disable Backspace
var el = document.activeElement;
if (!((el.nodeName == "INPUT" && (el.type == "text" || el.type == "password")) || el.nodeName == "TEXTAREA")) {
e.preventDefault();
e.stopPropagation();
return false;
}
}
};
DOM3 イベント モデルの仕様には下位互換性があるため、これが問題になるとは思いませんが、これは上記のコードの DOM3 修正バージョンです。
function KeyDownHandler(e) {
if (e.keyCode == 8) { // Disable Backspace
var el = document.activeElement;
if (!((el.nodeName == "INPUT" && (el.type == "text" || el.type == "password")) || el.nodeName == "TEXTAREA")) {
e.preventDefault();
e.stopPropagation();
}
}
};
if (document.attachEvent) document.attachEvent("onkeydown", KeyDownHandler);
else document.addEventListener("keydown", KeyDownHandler);
上記のような DOM3 イベント登録は非常に面倒な場合があります。John Resigはこれに関する適切な実装を行っていますが、JQuery のような標準のクロス ブラウザー ライブラリを使用することもできます。これはすべての主要なブラウザーで正常に動作します!