使用jquery在表中的箭头键导航

时间:2011-01-24 11:54:01

标签: jquery

我有应用程序,我使用箭头键在表格单元格之间导航。我有一个问题

1)如果焦点位于第一行的第一个单元格中,则按下左键将使焦点不可见 2)如果焦点在最后一行的最后一个单元格中,则按右键使焦点不可见。

如果单元格是第一行的第一个单元格(按下左键)并且与最后一行的最后一个单元格相同(按下右键),如何使焦点保持在同一单元格中

这是代码:

switch(e.keyCode)
    {
      case 37:
        // Left
        button = cell.prev('td').find('button');
        if (button.length == 0)
        {
          // Nothing further left, go to end of
          // previous row
          button = cell.parent('tr').prev('tr').find('td:last button');

        }
        break;
      case 38:
        // Up
        row = cell.parent('tr');
        index = row.children('td').index(cell);
        button = row.prev('tr').find('td:eq(' + index + ') button').length === 0 ? row.find('td:eq(' + index + ') button') : row.prev('tr').find('td:eq(' + index + ') button');
        break;
      case 39:
        // Right
        button = cell.next('td').find('button');
        if (button.length == 0)
        {
          // Nothing further right, go to beginning of
          // next row
          button = cell.parent('tr').next('tr').find('td:first button');
        }
        break;
      case 40:
        // Down
        row = cell.parent('tr');
        index = row.children('td').index(cell);
        button = row.next('tr').find('td:eq(' + index + ') button').length === 0 ? row.find('td:eq(' + index + ') button') : row.next('tr').find('td:eq(' + index + ') button');;
        break;
    }

1 个答案:

答案 0 :(得分:1)

如果没有更多的代码,很难分辨,但如果找不到下一个/上一个按钮,则要保留当前单元格,您只需在switch语句后添加以下代码:

if (button.length == 0) button = cell.find('button');