如何防止Tab键跳转到下一个表单字段?

时间:2018-06-13 14:31:57

标签: javascript html forms

我遇到了问题:我正在构建一个页内多阶段表单。每个阶段'是在自己的面板(div)。我将通过javascript(next / prev按钮)移动面板。每个面板都有自己的验证,如果未成功验证电流,则无法跳转到下一个面板。一切都很好。

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

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

换句话说:如何仅对某些字段禁用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(); 
});

1 个答案:

答案 0 :(得分:1)

根据@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(); 
});

这将预先提示用户访问下一个面板,而无需点击下一个&#39;按钮,从而首先验证当前面板。