2011-05-19 48 views
2

我需要能夠用jQuery替換擊鍵。當按下右箭頭時,我想要按Tab鍵。到目前爲止,我有:如何用jQuery替換擊鍵?

<script type="text/javascript" src="jquery-1.6.1.min.js"></script> 
<script type="text/javascript" src="jquery.simulate.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     $("select").each(function() { 
       $(this).keydown(function(event) { 
        if (event.which == '39') { 
         $(this).simulate("keydown", { keyCode: 9, ctrlKey: false, shirtKey: false }); 
         $(this).simulate("keypress", { keyCode: 9, ctrlKey: false, shirtKey: false }); 
         $(this).simulate("keyup", { keyCode: 9, ctrlKey: false, shirtKey: false }); 
         return false; 
        } 
      }); 
     }); 
    }); 
</script> 

39是右箭頭,9是選項卡按鈕。此外,模擬keydown遞歸調用事件處理程序,這顯然是不好的,但即使沒有這一行,這仍然不起作用。

我使用jquery.simulate.js位於(http://code.google.com/p/jqueryjs/source/browse/trunk/plugins/simulate/jquery.simulate.js?r=6063)因爲我找不到用jQuery模擬按鍵的方法。

按鍵只是不模擬實際的按鍵。

+2

對於正確的元素「焦點」不會更容易(如果您正在使用它來執行「標籤」) – balexandre 2011-05-19 20:50:02

+1

您是否真的需要模擬標籤或只是移動焦點,如果您只是想移動將焦點放在下一個元素上,它可能更容易做$('#nextElement')。focus(); – ihumanable 2011-05-19 20:53:47

+0

專注於下一個元素會好起來的,但我試圖在自動生成頁面上做到這一點,所以我無法知道下一個元素ID,名稱或類似的東西。我只知道我想把焦點轉移到下一個tabindex。 – Brandon 2011-05-19 20:59:52

回答

2

您無法使用javascript模擬實際按鍵。它是瀏覽器安全的核心組件。想象一下,能夠模擬Alt-Tab或Ctrl-Shift-Del。

當然,您可以定義一個封裝您想要觸發的行爲的方法,並在按下特定的鍵時調用該方法。

例如,當有人在另一個select元素上按下右箭頭時,跳轉到下一個select元素,我會保存頁面上所有select元素的列表;當按下右箭頭時,我會在該列表中找到當前焦點選擇的位置,並在下一個列表中找到.focus()。