将焦点设置为提交按钮会触发绑定事件

时间:2014-05-06 11:28:14

标签: javascript jquery focus

我有几个文本输入,其中按下回车键应该移动到下一个文本输入,在最后一个文本输入之后,最后提交按钮应该没有被按下。通过输入从输入跳转到输入可以正常工作:

$("input.insert").keydown(function (event) {
    if(event.keyCode == 13) {
        $("input.insert").eq($("input.insert").index(this) + 1).focus(); 
    }
});

但是当光标位于提交按钮之前的最后一个文本输入字段中并且按下Enter键时,焦点跳转到提交按钮释放其单击事件。为什么?我希望用户在离开最后一个输入字段后再次按Enter键。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

很难确切地说出你的代码究竟发生了什么而没有看到其余部分,但我确信添加event.preventDefault()行可以解决你的问题。它基本上会阻止浏览器执行该事件的默认操作,请参阅示例http://jsfiddle.net/3m4eL/

$('input[type="text"]').keydown(function (event) {
    if (event.keyCode == 13) {
        $("input").eq($("input").index(this) + 1).focus();
        event.preventDefault();
    }
});

请注意,我只将函数绑定到文本输入的keydown事件,而不是提交输入 - 否则您无法提交表单

请注意,版本9之前的Internet Explorer中本身不存在event.preventDefault(),但jQuery会为您添加缺少的功能并使用event.returnValue = false作为后备