将焦点设置在提交按钮上将触发绑定事件

Setting focus on submit button fires the bound event

本文关键字:绑定 事件 按钮 焦点 设置 提交      更新时间:2023-09-26

我有几个文本输入,其中按回车键应该移动到下一个,最后一个文本输入后,提交按钮应该有焦点而不被按下。用enter键从一个输入跳转到另一个输入就可以了:

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

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

事先非常感谢您的帮助

如果没有看到代码的其余部分,很难确切地说出代码发生了什么,但我确信添加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事件,而不是提交输入—否则您根本无法提交表单

请注意,event.preventDefault()在ie9版本之前不存在,但是jQuery为您添加了缺失的功能,并使用event.returnValue = false作为备用