当用户按Enter键时,如何防止表单内的按钮元素上的jQuery处理程序执行?

时间:2011-10-26 03:52:32

标签: jquery html forms button form-submit

我在button中有一个form元素,如下所示:

<form>
    <input type="text">
    <button>Test</button>
    <input type="submit" value="Submit"/>
</form>

使用以下JS:

$('form').submit(function() {
    alert('Form submitted.');
    return false;
});

$('button').click(function() {
    alert('Button clicked.');
});

和jsFiddle:http://jsfiddle.net/JnnRX/

当用户关注文本字段,键入某些文本,然后按Enter键时,button处理程序将首先执行,然后执行form处理程序。但是,我想要它 执行表单处理程序并忽略该按钮。有没有办法解决这个问题,或者最好将我的button元素更改为其他内容?

2 个答案:

答案 0 :(得分:1)

按下button

类型的按钮
<button type="button">Test</button>

如果是该类型,浏览器将无法识别“输入”提交,除非该按钮具有焦点。通常,表单流程中的第一个submit按钮将是在输入时提交的按钮。

答案 1 :(得分:0)

在这里:http://jsfiddle.net/JnnRX/17/

基本上你只需要在表单的keyup()上使用e.preventDefault()。 e表示keyup事件,e.keyCode表示按下的键。 13是回车键的键码。

编辑: Woops,我不明白你原来的要求。我已经用你想要的东西更新了jsfiddle。