jQuery - 获取<input />的索引抛出一个按键事件

时间:2013-08-05 15:11:39

标签: javascript jquery html input indexing

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

一旦用户按下“输入”按钮,当输入被聚焦时,我需要跳转到下一个输入字段,如“tab”键那样。

我正在关注this已接受的回复,这是我迄今为止所做的: Fiddle

CODE

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

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

我做错了什么?我一直在努力使用这段代码,我放弃了。


我发现用this替换e.target也有效。

CODE

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

2 个答案:

答案 0 :(得分: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));
    }
});

P.S。您应该cache that selector

答案 1 :(得分: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/