我知道之前已经有类似的问题被问过,但是我遇到的情况与我在 Stack Overflow 上找到的不太一样。
我有一个表单,我将其拆分成几个 jQuery 手风琴选项卡。 我希望用户可以在选项卡 1 下填写文本字段,然后按下 Tab 键自动打开选项卡 2 并将焦点放在该选项卡中的文本字段上。 我遇到的问题是如何防止 Chrome 浏览器中 Tab 键的默认行为。
$("form#new_story").keydown(function (e) {
if(!e) var e = window.event;
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
alert("tab was keyed");
}
});
我已在Chrome、FF和Safari中进行了测试。在FF和Safari中表现良好,但当使用Chrome的用户按下Tab键时,在事件触发之前会在文本字段中输入实际的制表符。我想停止这种行为,但是制表符显然是在事件触发之前输入的。有没有办法阻止这种情况发生?
keydown
事件之前输入?听起来不太可能。但为了防止这种情况发生,您可以挂钩keypress
并抑制它。 - Bergikeypress
没有捕获到 tab 键的按下(我知道keypress
在旧版本的 ie 中无法捕获非字符键。但是不知道它在 Chrome 中也无法捕获非字符键。无论如何,我刚刚找到了问题所在。这是 jquery 手风琴和 jquery 验证之间非常有趣的交互。将其作为下面的答案提交。) - chuck w