javascript - 禁用某些键,但不适用于文本区域和输入

标签 javascript jquery html preventdefault

我检查了这个精彩的网站数据库,但不知何故提供的答案不起作用。

为了防止出现故障,默认情况下我必须禁用箭头键和空格键。这适用于以下代码:

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);

但是好像不行。非常感谢帮助!

最佳答案

在这种情况下,您可以选择为所有 textareainput 元素设置事件处理程序,并利用 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/

相关文章:

Javascript 在追加时不显示输入字段

jquery ui datepicker多年来动态多个范围

jquery - 跟踪选定的单选按钮并即时应用样式

java - 在 Java 中使用 Regex 到 "transform"html 标签样式中的 css 样式

html - 如何以响应式设计方式使我的 div 居中?

javascript - 仅当设置新帧时才将动画绘制到 Canvas 上?

javascript - 在 jsPDF 从 PNG 到 JPEG 的转换中显示透明背景

javascript - 在 Bootstrap Modal 中动态更新按钮 onclick

javascript - 如何确保在禁用时提交 <select> 表单字段?

jquery - 使用 PartialView 的 MVC 5 JQuery Bootstrap Modal