javascript keydown在chrome和firefox中不起作用[关闭]

Posted

技术标签:

【中文标题】javascript keydown在chrome和firefox中不起作用[关闭]【英文标题】:javascript keydown not working in chrome and firefox [closed] 【发布时间】:2013-04-21 09:10:25 【问题描述】:

在表格中,我通过更改行的样式来模拟选定的行。现在我想通过箭头键移动这个选定的行,但是 keydown 事件在 Chrome 和 Firefox 中不起作用。

我不想使用 JQuery。

另外(如果可能的话)因为我在一个复杂的过程中在服务器端呈现这个表,所以最好使用内联事件处理程序而不是附加 javascript(我的意思是使用

...)

【问题讨论】:

你当前的尝试太干净了,我几乎看不到它...... 为什么会有这些反对票? (keydown 不适用于 chrome 和 firefox 中的 TR 元素)。 keydown 不是 Jquery 事件吗? 【参考方案1】:

我认为您不应该在表格行上使用 onkeydown。 仅当您在其中有输入元素时,对行的 Keydown 才有效。否则无法集中注意力。

不知道这在您的情况下是否可行,但您可以这样尝试。如果出于某种原因您不想使用 jQuery,则必须针对不支持 querySelector 的浏览器对其进行一些修改:

document.body.addEventListener('keydown',function(ev)
    var trs = document.querySelector('.s');
    if(ev.keyCode == 38 && trs.previousSibling)
        trs.className = '';
        trs.previousSibling.className = 's';
    else if(ev.keyCode == 40 && trs.nextSibling)
        trs.className = '';
        trs.nextSibling.className = 's';
    
)

http://jsfiddle.net/FvgaE/

【讨论】:

您无需输入元素即可获得焦点。 你是对的 Neil,但为什么“ @Neil 对,它也应该与 a 一起使用。但它不适用于普通的tr

以上是关于javascript keydown在chrome和firefox中不起作用[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 keydown 上使用 Javascript 模拟悬停?

jQuery keydown 事件绑定 - 实时 vs keydown

Javascript/Jquery 验证按键/keydown 上的十进制输入

javascript得到键盘keydown和keyup输入

javascript 处理ESC keydown

用`which`属性以编程方式触发keydown事件