让jQuery在按键时将焦点移到下一个输入元素

让jQuery在按键时将焦点移到下一个输入元素,jquery,html,dom,Jquery,Html,Dom,我想写一段代码,如果用户按下前一个元素中的一个键,它会将光标的焦点移到标记中的元素上 e、 g.每次用户在输入框中输入字符/数字时,焦点会自动切换到下一个输入框,就像在某些串行代码输入表单中一样 我以前尝试过使用jquery的.live和.keypress,但都没有用。这是我写这篇文章时的代码 $('.fmq').keypress(function() { $(this).next().focus(); } 这是我的标记 <input name="serial[1]" type=

我想写一段代码,如果用户按下前一个元素中的一个键,它会将光标的焦点移到标记中的元素上

e、 g.每次用户在输入框中输入字符/数字时,焦点会自动切换到下一个输入框,就像在某些串行代码输入表单中一样

我以前尝试过使用jquery的.live和.keypress,但都没有用。这是我写这篇文章时的代码

$('.fmq').keypress(function() {
    $(this).next().focus();
}
这是我的标记

<input name="serial[1]" type="text" maxlength="1" class="fmq">
<input name="serial[2]" type="text" maxlength="1" class="fmq">
<input name="serial[3]" type="text" maxlength="1" class="fmq">
<input name="serial[4]" type="text" maxlength="1" class="fmq">
<input name="serial[5]" type="text" maxlength="1" class="fmq">
<input name="serial[6]" type="text" maxlength="1" class="fmq">

希望这是足够的信息,让大家明白这一点,如果没有那么请问我更多

感谢您提供的帮助,如果之前已经发布过,请道歉

干杯


丹。

您尚未关闭对
按键的呼叫:

$('.fmq').keypress(function() {
    $(this).next().focus();
});

这对我来说很有用。

JQuery UI已经有了这一点,在我下面的示例中,我包括了一个maxchar属性来关注下一个可聚焦元素(输入、选择、文本区域、按钮和对象)

text 1
正文2
复选框1
复选框2
下拉列表1 1. 2.
下拉列表2 1. 2. $(函数(){ var focusables=$(“:focusables”); 可调焦。键控(功能(e){ var maxchar=false; if($(this.attr(“maxchar”)){ if($(this.val().length>=$(this.attr(“maxchar”)) maxchar=true; } if(e.keyCode==13 | | maxchar){ var电流=可调焦指数(本), next=focusables.eq(电流+1)。长度?focusables.eq(电流+1):focusables.eq(0); next.focus(); } }); });
我真不敢相信我错过了(哦,亲爱的,回到《为我编写101》lol。非常感谢你强调了这个错误。在编写JavaScript时,让Firebug或Chrome developer tools中的控制台窗口始终处于打开状态。它会指出像这样明显的错误。
text 1 <input type="text" value="" id="txt1" maxchar="5" /><br />
text 2 <input type="text" value="" id="txt2" maxchar="5" /><br />
checkbox 1 <input type="checkbox" value="" id="chk1" /><br />
checkbox 2 <input type="checkbox" value="" id="chk2" /><br />
dropdown 1 <select id="dd1" >
<option value="1">1</option>
<option value="1">2</option>
</select><br />
dropdown 2 <select id="dd2">
<option value="1">1</option>
<option value="1">2</option>
</select>


$(function() {
    var focusables = $(":focusable");   
    focusables.keyup(function(e) {
        var maxchar = false;
        if ($(this).attr("maxchar")) {
            if ($(this).val().length >= $(this).attr("maxchar"))
                maxchar = true;
            }
        if (e.keyCode == 13 || maxchar) {
            var current = focusables.index(this),
                next = focusables.eq(current+1).length ? focusables.eq(current+1) : focusables.eq(0);
                next.focus();
        }
    });
});