我检查了这个精彩的网站数据库,但不知何故提供的答案不起作用。
为了防止出现故障,默认情况下我必须禁用箭头键和空格键。这适用于以下代码:
window.addEventListener("keydown", function(e) {
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
}, false);
但是箭头键和空格键对于网站的某些区域(输入和文本区域字段)是必需的。为了允许,我做了如下操作:
window.addEventListener("keydown", function(e) {
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) && ($(event.target)[0]!=$("textarea, input")[0])) {
e.preventDefault();
}
}, false);
但是好像不行。非常感谢帮助!
最佳答案
在这种情况下,您可以选择为所有 textarea
和 input
元素设置事件处理程序,并利用 event.stopPropagation()
以防止触发窗口事件处理程序。这样,元素捕获 keydown 事件,然后告诉 JavaScript 引擎不要触发 DOM 链中较高层元素(例如文档或窗口)的其他事件处理程序。
window.addEventListener("keydown", function(e) {
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
}, false);
使用 jQuery:
// Function gets run after document is loaded
$(function(){
$("textarea, input").keydown(function(e){
e.stopPropagation()
})
});
编辑:工作jsFiddle.
关于javascript - 禁用某些键,但不适用于文本区域和输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25416767/