jQuery-获取<输入>引发按键事件

jQuery - get the index of <input> throwing a keypress event

本文关键字:事件 输入 获取 lt jQuery- gt      更新时间:2023-09-26

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

一旦用户按下"输入"按钮,当输入集中时,我需要跳到下一个输入字段,就像"选项卡"键一样

我一直在关注这个公认的回应,这就是我迄今为止所做的:Fiddle

代码

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

正如你所看到的,每次你关注一个输入,然后按ENTER,弹出消息说"-1"。。

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


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

代码

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

这是因为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.您可能应该缓存该选择器。

$(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/