javascript - 如何防止tab键跳转到下一个表单域?

标签 javascript html forms

我遇到了一个问题:我正在构建页内多阶段表单。每个“舞台”都在自己的面板(一个 div)上。我将通过 javascript(下一个/上一个按钮)浏览面板。每个面板都有自己的验证,如果当前验证不成功,则无法跳转到下一个面板。一切都很好。

问题是当用户开始使用选项卡从一个字段跳到另一个字段时。当他到达当前面板的最后一个字段时,该选项卡会将他带到下一个面板。

所以我需要的是避免每个表单的最后一个字段接受选项卡事件,或者避免每个表单的第一个字段可以从选项卡访问。或之类的。

换句话说:如何只对某些字段禁用 tab 键? 或者,如何将选项卡操作限制在表单中的特定字段组?

我已经尝试了几种方法,但没有成功:

// on last panel field
$('.block-tab').on('keypress', function(e) { 
  if (e.keyCode == 9) e.preventDefault();
});

// on first panel field
$('.block-tab').on('keyup', function(e) { 
  if (e.keyCode == 9) e.preventDefault(); 
});

最佳答案

正如@Teemu 所建议的,onkeydown 将起作用。所以基本上,在每个面板/选项卡的最后一个字段上,我将分配一个类,例如“block-tab”。

<input class="block-tab" name="email" id="email" type="text"  value="" />

然后:

$('.block-tab').on('keydown', function(e) { 
  if (e.keyCode == 9) e.preventDefault(); 
});

这将阻止用户在不单击“下一步”按钮的情况下访问下一个面板,从而首先验证当前面板。

关于javascript - 如何防止tab键跳转到下一个表单域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50839838/

相关文章:

javascript - 如何动态地将 html 放入 bootstrap 2.3.2 弹出窗口

javascript - 使用外部文件的文件夹制作网页

html - CSS 和表单问题 - 给我带来冲突 :(

javascript - 显示其他两个输入值之和的输入框

ruby-on-rails - 不工作的领域有很多关联

javascript - 如何在textarea中设置 "on Click Undo"添加文本?

javascript - 单击按钮时评估用户 JS 语法

jquery - 如何在点击链接时显示隐藏的div

html - 为什么 li 标签之间会出现这种差距?请看我的代码

html - 使 Bootstrap 的 Carousel 既居中又响应?