我想为除textboxes和textareas之外的任何元素禁用退格键(keycode 8)。
这是我尝试过的没有成功的事情:
$(":not(input, textarea)").keydown(function(event) {
if (event.keyCode == 8) {
event.preventDefault();
return false;
}
});
...
$("*:not(input, textarea)").keydown(function(event) {
if (event.keyCode == 8) {
event.preventDefault();
return false;
}
});
...
$("body").not("input,textarea").keydown(function(event) {
if (event.keyCode == 8) {
event.preventDefault();
return false;
}
});
这个想法是避免用户在没有聚焦在任何文本框或文本区域时意外地击中退格键。
有什么想法吗?
答案 0 :(得分:6)
您还要禁用只读的文本区域或文本框。
如果文本区域或文本框是只读的并且有焦点,那么按下退格键也会导致您离开页面。这就是为什么你也应该检查readonly。
我假设你试图阻止后退功能。
编辑:
您也可以将侦听器附加到正文。 EDIT2:你也需要阻止对checbox采取行动(这是输入)
$(document).keydown(function (e) {
var element = e.target.nodeName.toLowerCase();
if ((element != 'input' && element != 'textarea') || $(e.target).attr("readonly") || (e.target.getAttribute("type") ==="checkbox")) {
if (e.keyCode === 8) {
return false;
}
}
});
答案 1 :(得分:2)
最简单的解决方案(涵盖所有特殊情况)是:
$(document).keydown(function(e) {
if (e.which == 8 && !$(':focus').length) {
e.preventDefault();
}
});