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

标签 javascript

这就是我所拥有的,并且运行良好。 但我想返回 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
}

这似乎是重复的,但我没有看到任何东西可以代替 enter 代替 tab 代码...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 以不同于文档顺序的顺序放置字段,您将需要做更多的工作,基本上是对 find 的结果进行排序> 在 tabindex 上并从那里开始工作。但这应该能让您走上正确的道路。

关于javascript - 按下 Enter 键时如何触发 Tab 按键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39130417/

相关文章:

javascript - 正则表达式 : Allow letters, 数字和空格(至少一个字母不是数字)

javascript - 基本 PayPal Checkout 按钮在 Firefox 中给出 500 内部服务器错误

javascript - 在 Sanctuary 管道中间执行 Fluture 任务

javascript - 在 promise 中控制 this 的值

javascript - 获取用户操作系统和版本号

javascript - 为什么在将数组传递给模态时会出现 Angular 未知提供程序注入(inject)器错误?

javascript - 如何捕获终端中显示的 Protractor 错误消息

javascript - 任何其他替代可见性崩溃的解决方案

Javascript .getHours() 无法正常工作

javascript - 无法添加外键约束