当文本字段或文本区域使用纯 JavaScript 获得焦点时禁用键盘快捷键

Posted

技术标签:

【中文标题】当文本字段或文本区域使用纯 JavaScript 获得焦点时禁用键盘快捷键【英文标题】:Disable keyboard shortcuts when text field or textarea has focus using pure JavaScript 【发布时间】:2013-12-13 18:05:26 【问题描述】:

我有一个简单的脚本,它使用左右箭头移动到下一篇和上一篇博文。

var nextEl = document.getElementById("pagination__next__link");
var prevEl = document.getElementById("pagination__prev__link");

document.onkeyup = function(e) 

    if (nextEl !== null) 
        if (e.keyCode === 37) 
            window.location.href = nextEl.getAttribute('href');
        
    
    if (prevEl !== null) 
        if (e.keyCode === 39) 
            window.location.href = prevEl.getAttribute('href');
        
    
    return false;
;

但当我有文本 inputtextarea 时,它也可以工作。聚焦时禁用键盘快捷键的最佳方法是什么?

谢谢!

【问题讨论】:

最好的方法是不听文档,而是听keyup的分页链接。 你的意思是像下面建议的@Thanh? nextEl.onkeyup = prevEl.onkeyup = function(e) ... 我真的无法让它工作......必须听文档。 【参考方案1】:

禁用文档输入的事件传播

nextEl.onkeyup = prevEl.onkeyup = function(e) e.stopPropagation(); ;

【讨论】:

以上是关于当文本字段或文本区域使用纯 JavaScript 获得焦点时禁用键盘快捷键的主要内容,如果未能解决你的问题,请参考以下文章

JS-onclick函数将文本字符符号插入到光标处的文本输入字段或文本区域

是否可以在 Mobile Safari 中使用 Javascript 在输入或文本区域上调用键盘?

在 2021 年制作类似于 Iphone 上的 imessage 应用程序的输入框或文本区域

Jquery .next(输入或文本区域)

当包含文本字段、文本区域等时,Jquery 对话框会多次打开

即使文本区域没有焦点,也能指示选定的文本