我正在编写一个小型jQuery表单例程,旨在帮助用户填写一组银行排序代码字段。有3个字段 - 当用户在一个字段中填入2个数字时,光标会自动聚焦()到下一个字段。
但是,如果用户决定将+ tab切换回前一个字段,则会出现问题。如果此字段已包含2个字符,则光标不会停留在该字段内,而是再次向前跳转。
HTML:
<div class="formItem sortCode clearfix">
<input type="text" maxlength="2">
<input type="text" maxlength="2">
<input type="text" maxlength="2">
</div>
jQuery的:
var $sortCollection = $('.sortCode input');
$('.sortCode input').keyup(function(event) {
var sortValue = $(this).val();
var sortPosition = $sortCollection.index(this);
if (!(event.keyCode == 9 && event.shiftKey)) {
if (sortValue.length == 2 && sortPosition != 2) {
sortPosition += 1;
$sortCollection.eq(sortPosition).focus().select();
}
}
});
我有一种感觉问题是当Shift键被释放时触发的keyup事件但是我不确定。请有人看看。
答案 0 :(得分:5)
试试这个:
if (!(event.keyCode == 16 || event.keyCode == 9)) {
if (sortValue.length == 2 && sortPosition !== 2) {
sortPosition += 1;
$sortCollection.eq(sortPosition).focus().select();
}
}
答案 1 :(得分:0)
我认为你想要的是忽略shift键点击,只需添加
if (event.keyCode == 16) return;
后
$('.sortCode input').keyup(function(event) {
注意:这不会影响event.shiftKey
答案 2 :(得分:0)
$('.formItem input[type=text]').focus(function(){
if ($(this).length == 2 ) {
$(this).next('.formItem input[type=text]').focus();
}
});
尝试将此工作放入代码中,不检查击键,但焦点由输入框的值控制。如果输入框聚焦的长度为2,则下一个输入框将被聚焦。这应该落空,直到找到长度为2的输入框。