2013-04-27 69 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

相關問題