请先访问此小提琴:http://jsfiddle.net/7Prys/
当用户输入第一个字段时我想得到的结果(用户每个字段只能输入一个字符串)第二个字段会自动聚焦,这将一直持续到第四个输入字段。它有一个快速的jQuery吗?而且当我删除代码时,前一个代码将按下退格键逐个聚焦。
这是html:
<input type="text" maxlength="1" class="small" />
<input type="text" maxlength="1" class="small" />
<input type="text" maxlength="1" class="small" />
<input type="text" maxlength="1" class="small" />
和jQuery:
$(".small").onchange(function () {
$(this).next().find(".small").focusIn();
});
答案 0 :(得分:5)
这对我有用:
$(".small").keyup(function (e) {
if(e.keyCode == 46 || e.keyCode == 8){
$(this).prev('.small').focus();
}
else {
$(this).next('.small').focus();
}
});
答案 1 :(得分:3)
尝试:
$(".small").keyup(function () {
$(this).next().focus();
});
<强> jsFiddle example 强>
一些笔记。在jQuery中,您使用的是.change()
,而不是.onchange()
。其次,.find()
搜索后代元素,所以它是你的例子,它永远找不到正确的元素,因为它们是兄弟姐妹。
答案 2 :(得分:3)
这里有各种各样的问题。
onchange
应为change
,但只有在输入失去焦点时才会触发,但效果不佳。我建议使用.keyup
。
$(this).next()
是输入元素,因此$(this).next().find(".small")
将找不到任何内容。您可以使用$(this).next(".small")
,但$(this).next()
就足够了。
http://jsfiddle.net/ExplosionPIlls/7Prys/6/
编辑:您可以检查e.which == 8
以确定是否按下了退格键,然后改为使用.prev
。
答案 3 :(得分:3)
你走了:
$(".small").on('keyup', function (e) {
if(e.keyCode == 8){ /* backspace */
$(this).prev('.small').focus();
}else{
$(this).next('.small').focus();
}
});
小提琴:http://jsfiddle.net/7Prys/10/
当按下除退格键以外的任何键时,这将转到下一个输入,并在按下退格键时转到上一个输入。请注意,如果要识别Delete键,可以添加|| e.keyCode == 46
if语句。
.onChange
或.focusIn
这样的内容。 .on
可以用于keyup
事件,如我的示例所示。此外,.find().next('.small')
应为.next('.small')
。
答案 4 :(得分:2)
on strong change事件有没有这样的东西。
是您可以使用的change
事件。
答案 5 :(得分:0)
它是.change()而不是.onChange()