我想在到达每个字段的input
时自动切换到下一个maxlength
字段。每个输入字段都放在cell
中的table
中。
<table border="0" cellpadding="1" cellspacing="1" class="td1202">
<tbody>
<tr>
<td> </td>
<td><input maxlength="1" type="text" style="width: 20px;"></td>
<td><input maxlength="1" type="text" style="width: 20px;"></td>
<td class="decimal">,</td>
<td><input maxlength="1" type="text" style="width: 20px;"></td>
<td><input maxlength="1" type="text" style="width: 20px;"></td>
<td><input maxlength="1" type="text" style="width: 20px;"></td>
</tr>
</tbody>
到目前为止,我已经尝试过:
$("input").keyup(function() {
if (this.value.length == this.maxLength) {
$(this)
.blur()
.parent()
.next()
.children('input')
.focus();
}
});
答案 0 :(得分:3)
说明:
您的代码不起作用,因为您有<td class="decimal">,</td>
,并且由于该原因代码无法找到下一个input
子代,因此它在前两次输入后停止工作。如果<td class="decimal">,</td>
不存在,您的代码将起作用。
解决方案:
您可以简单地找到下一个输入的索引,而不用检查子级等。
下面是工作示例:
$("input").keyup(function() {
if (this.value.length == this.maxLength) {
var index = $(this).index("input");
$("input:eq(" + (index + 1) + ")").focus();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="0" cellpadding="1" cellspacing="1" class="td1202">
<tbody>
<tr>
<td> </td>
<td><input maxlength="1" type="text" style="width: 20px;"></td>
<td><input maxlength="1" type="text" style="width: 20px;"></td>
<td class="decimal">,</td>
<td><input maxlength="1" type="text" style="width: 20px;"></td>
<td><input maxlength="1" type="text" style="width: 20px;"></td>
<td><input maxlength="1" type="text" style="width: 20px;"></td>
</tr>
</tbody>