ezj v2.0 应用示例-报表中用上下键移动焦点

作者:vkvi 来源:ITPOW(原创) 日期:2010-6-6

填报报表中往往有很多文本框,若使用鼠标移动焦点,速度就慢了,可用 Tab 将焦点移向下一个元素、用 Shift + Tab 将焦点移向上一个元素。

但这似乎还不够。

ezj v2.0 应用示例-报表中用上下键移动焦点

如上,当前焦点在第二行的第二列,现在希望按向下键焦点移动到第三行第二列、按向上键焦点移动到第一行第二列。

HTML 代码

<table id="table1">
  <tr>
    <td><input type="text" size="5" id="cell_0_0" /></td>
    <td><input type="text" size="5" id="cell_0_1" /></td>
    <td><input type="text" size="5" id="cell_0_2" /></td>
  </tr>
  <tr>
    <td><input type="text" size="5" id="cell_1_0" /></td>
    <td><input type="text" size="5" id="cell_1_1" /></td>
    <td><input type="text" size="5" id="cell_1_2" /></td>
  </tr>
  <tr>
    <td><input type="text" size="5" id="cell_2_0" /></td>
    <td><input type="text" size="5" id="cell_2_1" /></td>
    <td><input type="text" size="5" id="cell_2_2" /></td>
  </tr>
</table>

我们为每个 input 设置合乎一定格式的 id。

ezj 实现代码

$("table1 <input").element.each(function(i, e){
    $(e).keydown(function(){
        var arr = (ezj.event.getEvent().srcElement || ezj.event.getEvent().target).id.split("_");
        var rowIndex = Number.from(arr[1]);
        var colIndex = Number.from(arr[2]);
        var keyCode = ezj.event.getEvent().keyCode;
       
        if (keyCode == ezj.event.key.down)
        {
            var nextInput = $("cell_" + (rowIndex + 1) + "_" + colIndex);
            if (nextInput.element)
            {
                nextInput.element.select();
            }
        }
        if (keyCode == ezj.event.key.up)
        {
            var prevInput = $("cell_" + (rowIndex - 1) + "_" + colIndex);
            if (prevInput.element)
            {
                prevInput.element.select();
            }
        }
    });
});

ezj 官方网站

http://www.itpow.com/products/ezj/


相关文章