jQuery:$(this).next()。focus();如果<input />标签后面跟着或者标签,那么它将无法工作

时间:2014-12-09 13:01:06

标签: jquery

我使用jQuery来限制输入<input>字段的数字位数,然后跳转到下一个字段。以下是代码:

HTML:

<input class=time ...><input class=time...><input class=time ...>

JS:

$('.time').on('keyup', function(event) {
  var data = $(this).val();
  data = data.replace(/\D/g,''); // Delete all non-digits
  len = data.length;    
  if (len==3) {
    data = data.slice(0,2) + ':' + data[2];  // Add a ':'
  } else if (len>=4) {
    data = data.slice(0,2) + ':' + data.slice(2,4);
    $(this).next('.time').focus();  
  }
  $(this).val(data);
});

以上将有效。但是,如果我将输入字段添加到表中,$(this).next('.time').focus();语句将不起作用:

<table>
<tr>
  <td><input class=time ...></td>
  <td><input class=time ...></td>
  <td><input class=time ...></td>
</tr>
</table>

我还发现,如果<input>标记后跟<br>,则focus()语句也会失败:

<input class=time ...><br>
<input class=time ...><br>
<input class=time ...><br>

我该如何解决?

1 个答案:

答案 0 :(得分:8)

好吧,因为输入不再具有兄弟关系,他们的父母就是这样。您需要遍历父td,然后在下一个td元素中找到输入:

$(this).parent().next().find('.time').focus();