繁体   English   中英

按下 Enter 键时如何触发 Tab 按键?

[英]How can I fire the Tab keypress when the Enter key is pressed?

这就是我所拥有的,并且效果很好。 但我想返回 tab 键而不是什么都不发生。

$(document).on("keypress", ":input:not(textarea):not([type=submit])", function(event) {
    if (event.keyCode == 13) {
        event.preventDefault();
    }
});

我想要的是:

if (event.keyCode == 13) {
    event.preventDefault();
    return event.keyCode = 9; <<= or something similar and simple
}

这似乎是重复的,但我没有看到任何东西可以代替 tab 代码的 enter ...... Tab 键已经知道跳过隐藏并使用 tab 顺序。

我怀疑您真正想要的是移动到表单中的下一个字段。

如果是这样,您可以轻松找到下一个表单字段并使用.focus()将其聚焦。 例如:

var fields = $(this).closest("form").find("input, textarea");
var index = fields.index(this) + 1;
fields.eq(
  fields.length <= index
  ? 0
  : index
).focus();

示例:

 $(document).on("keypress", ":input:not(textarea):not([type=submit])", function(event) { if (event.keyCode == 13) { event.preventDefault(); var fields = $(this).closest("form").find("input, textarea"); var index = fields.index(this) + 1; fields.eq( fields.length <= index ? 0 : index ).focus(); } });
 <form> <div> <label> Field 1: <input type="text"> </label> </div> <div> <label> Field 2: <input type="text"> </label> </div> <div> <label> Field 3: <input type="text"> </label> </div> </form> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

如果您使用tabindex以与文档顺序不同的顺序放置字段,您将需要做更多的工作,基本上是对tabindex上的find结果进行排序并从那里开始工作。 但这应该能让你走上正确的道路。

我得到了为我工作的公认答案,但我需要弄清楚代码的确切位置:

$(document).on("keypress", ":input:not(textarea):not([type=submit])", function(event) {
    if (event.keyCode == 13) {
        var fields = $(this).closest("form").find("input, textarea");
        var index = fields.index(this) + 1;

        fields.eq(
            fields.length <= index
                ? 0
                : index
        ).focus();
        event.preventDefault();
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM