jQuery onChange()得到了另一个焦点

时间:2013-07-08 19:28:51

标签: jquery html css

请先访问此小提琴: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();
});

6 个答案:

答案 0 :(得分:5)

这对我有用:

$(".small").keyup(function (e) {
    if(e.keyCode == 46 || e.keyCode == 8){
        $(this).prev('.small').focus();
    }
    else {
      $(this).next('.small').focus();
    }
});

小提琴:http://jsfiddle.net/5Sv2f/

答案 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

http://jsfiddle.net/ExplosionPIlls/7Prys/11/

答案 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()

http://api.jquery.com/change/