Javascript 无法将焦点设置为下一个文本框

Javascript 无法将焦点设置为下一个文本框,javascript,jquery,Javascript,Jquery,我有三个文本框,都带有“initialbox”类 每个框的最大长度为1个字符。用一个字符填充方框后,应将下一个方框设置为焦点。(与使用TAB键的工作方式完全相同) 我添加了alert(),以检查事件是否触发,但$(this).next('.initialbox').focus()不会将焦点设置为下一个选项卡。我也尝试过使用$(this).next.focus() 非常感谢 HTML: jsiddle:您不能将.next()与标记一起使用,因为您的.initialbox输入元素不是同级元素 您需要

我有三个文本框,都带有“initialbox”类

每个框的最大长度为1个字符。用一个字符填充方框后,应将下一个方框设置为焦点。(与使用TAB键的工作方式完全相同)

我添加了
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();
  }
});