Javascript 无法将焦点设置为下一个文本框
我有三个文本框,都带有“initialbox”类 每个框的最大长度为1个字符。用一个字符填充方框后,应将下一个方框设置为焦点。(与使用TAB键的工作方式完全相同) 我添加了Javascript 无法将焦点设置为下一个文本框,javascript,jquery,Javascript,Jquery,我有三个文本框,都带有“initialbox”类 每个框的最大长度为1个字符。用一个字符填充方框后,应将下一个方框设置为焦点。(与使用TAB键的工作方式完全相同) 我添加了alert(),以检查事件是否触发,但$(this).next('.initialbox').focus()不会将焦点设置为下一个选项卡。我也尝试过使用$(this).next.focus() 非常感谢 HTML: jsiddle:您不能将.next()与标记一起使用,因为您的.initialbox输入元素不是同级元素 您需要
alert()
,以检查事件是否触发,但$(this).next('.initialbox').focus()
不会将焦点设置为下一个选项卡。我也尝试过使用$(this).next.focus()
非常感谢
HTML:
jsiddle:您不能将.next()
与标记一起使用,因为您的.initialbox
输入元素不是同级元素
您需要遍历到父级(最近的()
)
,以及它的邻居
,然后在以下位置找到.initialbox
:
$(".initialbox").keyup(function () {
if (this.value.length == 1) {
alert();
$(this).closest('td').next('td').find('.initialbox').focus();
}
});
改为尝试以下方法(对于小提琴中的代码):
问题是$(this)。next()
查看的是同级,而不是整个dom。因此,您需要遍历dom以找到下一个要关注的元素
(经过编辑,将“td”添加到
.parent()
和.next()
位,以更清楚地了解发生了什么)上下遍历DOM的另一种方法是获取$('.initialbox')
集合中输入的
然后可以直接转到下一个输入,如下所示:
$('.initialbox').keyup(function() {
var idx= $('.initialbox').index(this);
if(this.value.length == 1) {
$('.initialbox').eq(idx+1).focus();
}
});
工作正常。我以为它会找到下一个文本框。非常感谢。这里的HTML示例与小提琴中的不同。有了问题中的标记,您的代码应该可以工作..您的问题具有误导性。发布代码和标记时保持一致通常是一种良好的做法。人们可以理解您试图做什么,但是如果您更改标记,那么相应的jQuery就会更改。很抱歉,我希望问题中的代码保持简单,并将其忽略,因为我认为表不是问题的原因。两周加上14小时的工作日让我心烦意乱。
$(".initialbox").keyup(function () {
if (this.value.length == 1) {
alert();
$(this).closest('td').next('td').find('.initialbox').focus();
}
});
$(".initialbox").keyup(function () {
if (this.value.length == 1) {
$(this).parent('td').next('td').find('.initialbox').focus();
}
});
$('.initialbox').keyup(function() {
var idx= $('.initialbox').index(this);
if(this.value.length == 1) {
$('.initialbox').eq(idx+1).focus();
}
});