在输入中输入maxlength
个字符后,我需要关注下一个输入。问题是下一个输入并不总是兄弟姐妹:
jQuery("input").on('input', function() {
if (jQuery(this).val().length == jQuery(this).attr('maxlength')) {
jQuery(this).next("input").focus();
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
When you have write 4 char, the focus have to switch to the next input:
<div>
OK
<input maxlength="4">
<input maxlength="4">
</div>
KO
<input id="inputWithTheIssue">
&#13;
答案 0 :(得分:4)
您无法使用.next()
函数,因为所有inputs
都不是兄弟姐妹。因此,您需要在整个输入控件集中找到当前输入的index
,并将其递增1以查找下一个发生的输入元素。
jQuery("input").on('input',function () {
if(jQuery(this).val().length == jQuery(this).attr('maxlength')) {
var currIndex = $(this).index(); // gets the index value w.r.t the other input controls
$('input').eq(currIndex + 1).focus();
}
});
答案 1 :(得分:1)
您需要做几件事。
var $check = $(document).find('input[type="text"]');
jQuery("input").on('input', function() {
if (jQuery(this).val().length == jQuery(this).attr('maxlength')) {
$check.eq($check.index(this) + 1).focus();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
When you have write 4 char, the focus have to switch to the next input:
<div>
OK
<input maxlength="4" type="text">
<input maxlength="4" type="text">
</div>
KO
<input id="inputWithTheIssue" type="text">
答案 2 :(得分:0)
您明确要求使用jQuery解决方案,但您可以在纯JavaScript中轻松完成,而无需合并任何库。
function inputChanged(element, index, array) {
element.oninput = function() {
if (element.value.length >= 4 && (index < array.length - 1)) {
array[index + 1].focus();
}
}
}
Array.from(document.getElementsByTagName('input')).forEach(inputChanged);
<div>
<input maxlength="4"/>
<input maxlength="4"/>
</div>
<input id="inputWithTheIssue"/>
我在这里做的是为文档中的每个inputChanged
调用input
函数。该函数采用参数:
element
,其中包含调用它的元素,index
,其中包含input
所有人调用此功能的信息,array
,用于存储所有input
s。在用户输入的这个功能中,我检查是否:
input
s中的最后位置。如果是这样,我们将聚焦数组中的下一个元素。
即使你想用jQuery方法来解决你的问题,我希望你或者也许是其他人,会觉得这个答案很有帮助。