2016-11-30 42 views
1

我想通過按enter將下一個輸入集中在表格字段中。 表看起來是這樣的:將焦點設置到表格中的下一個輸入字段

<table> 
    <tbody> 
     <tr> 
      <td>Title 1</td> 
      <td><input type="number"></td> 
      <td>Unit</td> 
     </tr> 
     <tr> 
      <td>Title 2</td> 
      <td><input type="number"></td> 
      <td>Unit</td> 
     </tr> 
     <tr class="group"> 
      <td colspan="3"></td> 
     </tr> 
     <tr> 
      <td>Title 3</td> 
      <td><input type="number"></td> 
      <td>Unit</td> 
     </tr> 
     <tr class="group"> 
      <td colspan="3"></td> 
     </tr> 
     <tr> 
      <td>Title 4</td> 
      <td><input type="number"></td> 
      <td>Unit</td> 
     </tr> 
    </tbody> 
</table> 

這是我的JS關注下輸入字段。

'change input[type="number"]': (event) => { 
    $(event.target).closest('tr').next(':not(.group)').find('input').focus(); 
} 

這是工作的第一個領域。下一個輸入字段變得焦點。但我不能關注第三個輸入字段。

我也試過

'change input[type="number"]': (event) => { 
    $(event.target).closest('tr').siblings(':not(.group)').find('input').focus(); 
} 

但隨後的焦點被設置爲最後一個輸入字段,我不明白爲什麼。

+0

只是在這篇文章中缺少。對不起, – user3142695

回答

4

問題是,jQuery的next()只看着下一個兄弟姐妹,而不是所有的兄弟姐妹。你想要的是nextAll()

$(event.target) 
    .closest('tr') 
    .nextAll('tr:not(.group)') 
    .first() 
    .find('input') 
    .focus(); 
+0

但是爲什麼使用'siblings()'錯誤? – user3142695

+0

因爲它會選擇之前和之後的兄弟姐妹。你會專注於所有這些,所以最後一個將是唯一獲得焦點的人。我用這個codepen解決了這個問題,並且留下了一個評論,顯示'.siblings()'發生了什麼:https://codepen.io/Yona-Appletree/pen/pNdGLV –

+0

謝謝你的解釋。 – user3142695

相關問題