1

我正在尝试获取一组输入之间的输入索引。基本上,我有一个表,其中包含不止一行的许多输入。

一旦用户按下“输入”按钮,同时输入焦点,我需要跳转到下一个输入字段,就像“tab”键一样。

我一直在关注这个被接受的回应,这就是我到目前为止所做的:小提琴

代码

$(document).keypress(function(e){
    if( e.which == 13 && e.target.nodeName == 'INPUT'){
        var inputs = $("#inputsTable input.td_in");
        alert(inputs.index(this));
    }
});

如您所见,每次您聚焦输入然后按 ENTER 时,弹出消息都会显示“-1”..

我究竟做错了什么?我一直在为这段代码苦苦挣扎一个小时,我要放弃了。


我发现替换thise.target也有效。

代码

$(document).keypress(function(e){
    if( e.which == 13 && e.target.nodeName == 'INPUT'){
        var inputs = $("#inputsTable input.td_in");
        alert(inputs.index(e.target));
    }
});
4

2 回答 2

2

那是因为this引用了document,而不是你的input.

使用.on(),并传递给它一个input.td_in选择器:

$('#inputsTable').on('keypress', 'input.td_in', function (e) {
    if( e.which == 13 ) {
        var inputs = $("#inputsTable input.td_in");
        alert(inputs.index(this));
    }
});

PS您可能应该缓存该选择器

于 2013-08-05T15:14:59.770 回答
0
$(document).on('keypress', 'input', function (e) {
    if( e.which == 13 ){
        var inputs = $("#inputsTable input");
        var the_index = inputs.index(this);        
        inputs[the_index+1].focus();
    }    
});

http://jsfiddle.net/5DwHw/1/

于 2013-08-05T15:23:48.720 回答