完全防止退格键可能不是一个好主意,假设您打错字并想在文本框中修复它!因此,只有当有人没有输入文本输入时,您才需要禁用退格!
这可能适用于所有主要浏览器:
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 这样的标准跨浏览器库,它在所有主要浏览器中都可以正常工作!