2013-04-27 49 views
-5

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

我不想使用JQuery。因为我在一个复杂的过程中在服务器端渲染这张表,所以最好使用内联事件hanlder而不是附加javascript(我的意思是使用< tr onkeydown =“myfunc(this)”> ... ... ... ... ... ... ... ... ... ... ... ... ...,28 )

+2

您当前的尝试是那么干净,我可以几乎看不到它...... – iGanja 2013-04-27 06:50:46

+0

为什么这些天赋的选票? (keydown不适用于Chrome和Firefox中的TR元素)。 – user2169286 2013-04-27 07:04:02

+0

“keydown”不是一个Jquery事件吗? – enb081 2013-04-27 07:39:04

回答

0

我不认为你应该在表行上使用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/

+0

你不需要有一个输入元素有焦点。 – Neil 2013-04-27 12:01:55

+0

你是对的Neil,但为什么“”不工作? – user2169286 2013-04-27 12:10:04

+0

@尼尔,它应该与'a'一起工作。但它不适用于简单的'tr' – Andy 2013-04-27 13:20:51

相关问题