JQuery HTML遍历表输入单元格垂直

时间:2015-04-16 19:22:31

标签: jquery focus html-table keyup

我有一个有四列的表。

我希望用户在任何单列中的所有输入单元格中捕获值。

==>象征着ENTER按键 示例:如果用户决定仅捕获Day02列中的值,则表遍历应为: 124 ==> 127 ==> 130 ==> 134

如果用户决定仅捕获Day03列中的值,则表遍历应为: 126 ==> 129 ==> 130 ==> 131

有些人可以使用jquery,keyup事件处理程序和focus()方法编写引号。

提前谢谢

<table border="1" cellpadding="0" cellspacing="0" id="keytable" style="width: 500px;">
<tbody>
    <tr>
        <th id="headcol">Data Element</th>
        <th>Day01</th>
        <th>Day02</th>
        <th>Day03</th>
    </tr>
    <tr>
        <td id="headcol"><strong>medical dose A</strong></td>
        <td id="actdata"><input id="124"/></td>
        <td id="actdata"><input id="125"/></td>
        <td id="actdata"><input id="126"/></td>
    </tr>
    <tr>
        <td id="headcol"><strong>medical dose B</strong></td>
        <td id="actdata"><input id="127"/></td>
        <td id="actdata"><input id="128"/></td>
        <td id="actdata"><input id="129"/></td>
    </tr>
    <tr>
        <td id="headcol"><strong>medical dose C</strong></td>
        <td id="actdata"><input id="130"/></td>
        <td id="actdata"><input id="131"/></td>
        <td id="actdata"><input id="132"/></td>
    </tr>
    <tr>
        <td id="headcol"><strong>medical dose D</strong></td>
        <td id="actdata"><input id="133"/></td>
        <td id="actdata"><input id="134"/></td>
        <td id="actdata"><input id="135"/></td>
    </tr>
   </tbody>
</table>    

2 个答案:

答案 0 :(得分:1)

感谢您的贡献@nevermind。来自On enter key move to next cell down in a table的以下代码已部分解决了我的问题。

代码是

var inputs = $("#keytable :input");
inputs.on("keypress keyup",function(e) { 
    if (e.keyCode == 13) {
        var $this = $(this),
            index = $this.closest('td').index();

        $this.closest('tr').next().find('td').eq(index).find('input').focus();
        e.preventDefault();
        e.stopPropagation();
    }
});

但是,在此应用程序的核心中,还有另一个按键/键盘事件,它在添加我自己的按键/键后触发。这个前一个按键/键盘将光标移动到同一行中的下一个单元格,后者将鼠标光标移动到同一列中的下一个单元格。是否有可能抑制/阻止前者在我的密钥表对象上触发而不删除以前的代码?

答案 1 :(得分:0)

我无法为您编写代码。但我可以给出一个可能的解决方案的建议。 您可以在每列上保留不同的类。

e.g。

   <tr>
       <td class="c1"></td>
       <td class="c2"></td>
       <td class="c3"></td>
     </tr>
     <tr>
       <td class="c1"></td>
       <td class="c2"></td>
       <td class="c3"></td>
     </tr>

然后使用要获取列值的列的类名。

e.g。第一栏

var firstColumnItems = document.getElementsByClassName("c1");