使用jQuery Tab键到表中的下一个单元格

时间:2011-11-20 23:13:08

标签: jquery jquery-selectors

我正在尝试使用jQuery选项卡到表中的下一个单元格失败,并认为这是由于我的选择器中的错误。使用开发人员工具,我看到我的单元格是一个跨度,位于<tr>内的td .EditText中。这是我正在尝试使用的代码。

$(function() {
    $('.EditText :text').live("keydown", function(e) {
        if (e.which == 9) { //tab Key                                   
            $(this).blur();
            $(this).parent('tr').next('td #EditText').find('span').click();
            return false;
        }
    });
});

3 个答案:

答案 0 :(得分:2)

我相信这一行:

$(this).parent('tr').next('td #EditText').find('span').click();

应该是:

$(this).next('td.EditText').find('span').focus();

答案 1 :(得分:1)

如果你能显示实际的标记,那将是非常有用,但我会对它进行一次尝试:

// Replace this
$(this).blur();
$(this).parent('tr').next('td #EditText').find('span').click();
// With this
$(this).blur().closest('td').next().find('td .EditText span').focus();

答案 2 :(得分:0)

我决定对此也不屑一顾。我为这个人创建了一个jsfiddle,所以请查看它,让我知道它是否正确。

以下是我目前的例子中的js:

$('table tr td.EditText span input').live('keydown', function(e) {
    // get the code of the key that was pressed
    var code = e.keyCode ? e.keyCode : e.which;

    // varify that the tab key was pressed
    if (code === 13) {
        // get the next tr's input field, and set focus to it
        $(this).parents('tr').next().find('td.EditText span input').focus();

        // prevent any default actions
        if (e.preventDefault) {
            e.preventDefault();
        }
        return false;
    }
});