0

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

6 回答 6

6

这对我有用:

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

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

于 2013-07-08T19:32:27.030 回答
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/
当按下退格键以外的任何键时,这将转到下一个输入,当按下退格键时,将转到上一个输入。请注意,|| e.keyCode == 46如果要识别 Delete 键,可以添加 if 语句。


没有.onChangeor之类的东西.focusIn.on可用于keyup我的示例中的事件。此外,.find().next('.small')应该只是.next('.small').

于 2013-07-08T19:32:37.830 回答
3

尝试:

$(".small").keyup(function () {
    $(this).next().focus();
});

jsFiddle 示例

一些笔记。在 jQuery 中,您使用.change(),而不是.onchange(). 其次,.find()搜索后代元素,因此您的示例将永远找不到正确的元素,因为它们是兄弟姐妹。

于 2013-07-08T19:31:22.243 回答
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/

于 2013-07-08T19:31:34.353 回答
2

存在on change 事件。

有一个可以使用的事件change

于 2013-07-08T19:31:06.100 回答
0

它是 .change() 而不是 .onChange()

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

于 2013-07-08T19:31:35.540 回答