我正在尝试创建一个函数,当按下Enter键时,会选择带有类的下一个输入。
我设法将.focus()设置为同一行中的下一个元素。但是,如果我需要选择下一行的下一个输入,则无法继续。
下一行中的第一个.quantity文本框需要重点关注。
控制台没有错误。
HTML
<table>
<tr>
<td>
<input class='quantity' value=''/>
<input class='100' value=''/>
</td>
<td>
<input class='quantity' value=''/>
<input class='50' value=''/>
</td>
<td>
<input class='quantity' value=''/>
<input class='20' value=''/>
</td>
</tr>
<tr>
<td>
<input class='quantity' value=''/>
<input class='100' value=''/>
</td>
<td>
<input class='quantity' value=''/>
<input class='50' value=''/>
</td>
<td>
<input class='quantity' value=''/>
<input class='20' value=''/>
</td>
</tr>
</table>
JQuery的
$(".quantity").on('keypress', function (e) {
if (e.keyCode === 13) {
$(this).parent().next('td').find('input.quantity').focus();
}
});
答案 0 :(得分:7)
您可以使用index
方法:
var $quan = $('.quantity');
$quan.on('keyup', function(e) {
if (e.which === 13) {
var ind = $quan.index(this);
$quan.eq(ind + 1).focus()
}
});
或者,如果您想选择所有输入,可以尝试:
var $input = $('input[type=text]');
$input.on('keyup', function(e) {
if (e.which === 13) {
var ind = $input.index(this);
$input.eq(ind + 1).focus()
}
});