2012-11-12 30 views
2

我想創建一個函數,當按Enter鍵發生下一個類的輸入被選中。Jquery專注於下一個元素與類

我已成功將.focus()下一個元素放在同一行內。但是,如果我需要選擇下一行中的下一個輸入,則無法繼續。

下一行中的第一個.quantity文本框需要重點關注。

控制檯中沒有錯誤。

http://jsfiddle.net/FP6qa/

HTML

<table> 
    <tr> 
     <td> 
     <input class='quantity' value=''/> 
     <input class='100' value=''/> 
     </td> 
     <td> 
     <input class='quantity' value=''/> 
     <input class='50' value=''/> 
     </td> 
     <td> 
     <input class='quantity' value=''/> 
     <input class='20' value=''/> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <input class='quantity' value=''/> 
     <input class='100' value=''/> 
     </td> 
     <td> 
     <input class='quantity' value=''/> 
     <input class='50' value=''/> 
     </td> 
     <td> 
     <input class='quantity' value=''/> 
     <input class='20' value=''/> 
     </td> 
    </tr> 
</table> 

JQuery的

$(".quantity").on('keypress', function (e) { 
     if (e.keyCode === 13) { 
      $(this).parent().next('td').find('input.quantity').focus(); 
     } 
}); 
+0

您有多個'quantity'文本框。下一行的哪個「數量」文本框應該有重點? –

+0

第一。對不起,我會修改問題。我正在尋找模擬tabindex。 – goingsideways

回答

7

您可以使用index方法:

​​

http://jsfiddle.net/cwgZP/

或者,如果你想選擇所有的輸入,你可以嘗試:

var $input = $('input[type=text]'); 
$input.on('keyup', function(e) { 
    if (e.which === 13) { 
     var ind = $input.index(this); 
     $input.eq(ind + 1).focus() 
    } 
}); 
+1

+1。第一種方法與我將要發佈的內容幾乎完全一樣(除了我要在一行中使用'var $ quantity = $('。quantity')。 'keyCode'到'which'就像我計劃的那樣... – nnnnnn

+0

@undefined第一個解決方案可以工作,但是,因爲這是它在keypress事件中提交的表單的一部分,所以我添加了return false;但它並沒有結束 – goingsideways

+0

@nnnnnn謝謝你,真是太棒了巧合 – undefined