2014-05-07 25 views
1

我需要使用鍵向上和向下鍵在表格行上滾動。爲此,我需要捕獲表格div上的關鍵事件。如果我用'click'事件替換'keyup',它的工作正常,但是同一段代碼不適用於鍵和鍵。我無法弄清楚這個問題。keyup和keydown不能在桌面上使用敲除綁定

$('#patientWL').on('keyup', '.bodyTable tbody tr', function(e) { 
    if (e.keyCode == 38) { 
     alert('key up'); 
    } else if (e.keyCode == 40) { 
     alert('key down'); 
    } 
}); 

工作我的問題的小提琴可以看出here

+1

像這樣的東西? http://jsfiddle.net/Alfie/LvEdk/19/ – Anton

+0

@Anton在我的項目中,只有瀏覽器窗口的一部分包含該特定的表,因此只能在該div上調用關鍵事件。如果我在該表之外單擊,那麼該事件也將被稱爲'文檔',這是不合需要的 – user2800089

+2

然後,您需要通過添加tabindex(如Sunny的答案)來做一個解決方法。下面是一個示例http://jsfiddle.net/Alfie/LvEdk/20/ – Anton

回答

1

請注意,這不是淘汰賽特定問題。問題在於元素處理keyup/down/press事件的方式。

A table(或trtd)默認情況下不能給出焦點。但是,您可以通過添加tabindex屬性更改:

<tr tabindex="0" id="example"></tr> 

然後,您可以給tr對焦,並且還與hover事件進行模糊處理:

$("#example").hover(function() { 
    this.focus(); 
}, function() { 
    this.blur(); 
}).keydown(function(e) { 
    alert(e.keyCode); 
}); 

tr具有焦點,它將接受鍵盤事件。看樣品here.

+0

根據您的示例,需要添加選項卡索引,但在我的情況下,行動態生成。那麼如何動態添加tab索引? – user2800089

+1

非常感謝安東在我的小提琴中所做的改變 – user2800089

+0

在我的應用程序中,我有一個用於添加新患者的頁面,一旦用戶點擊保存,它將顯示在我的小提琴的表格中,並且該特定的記錄也將具有焦點但現在如果我正在做按鍵事件,它不工作,只要我點擊任何記錄,它工作正常。所以如何把焦點放在我的小提琴表上。一定幫忙 – user2800089