我正在尝试在我的jQuery应用程序中禁用退格键,这样它就不会导致浏览器返回页面。但是,如果输入或textarea元素被聚焦,我不想禁用它,因为我希望退格在那里正常工作。
所以,我想选择任何不是输入或文本区域的东西。
这是代码。问题是它会触发每个元素,甚至是输入和文本。
$(':not(input, textarea)').keydown(function(e) {
if (e.keyCode === 8) {
return false;
}
});
我不明白为什么:not()函数不起作用。有没有更好的方法可以做到这一点?
请注意,如果我删除:not()函数,它可以正常工作。也就是说,它只会触发input和textarea元素。
编辑:根据接受的答案,这里是有效的代码。我相信有更好的方法可以做到这一点。
$(document).keydown(function(e) {
var element = e.target.nodeName.toLowerCase();
if (element != 'input' && element != 'textarea') {
if (e.keyCode === 8) {
return false;
}
}
});
答案 0 :(得分:6)
您的问题是keydown
事件从<input>
或<textarea>
元素冒泡到包含它的普通元素,从该元素触发事件。
您需要检查e.target
。
答案 1 :(得分:3)
试试这段代码:
$("*:not(input)")