Javascript 如何防止表单提交触发`按钮:first.onclick()`?

Javascript 如何防止表单提交触发`按钮:first.onclick()`?,javascript,javascript-events,Javascript,Javascript Events,每次我通过按enter键提交表单时,关联表单中第一个上的click()函数都会被触发。问题是(除了我觉得这种行为很奇怪之外)它实际上是一个点击事件,与实际点击按钮没有区别。如果它在我的提交按钮上触发了偶数,我会接受它 问题是,在这种情况下,第一个按钮与实际表单无关,它实际上位于一个隐藏的弹出窗口中 那么确切的问题是:为什么会发生这种情况?我如何预防它?我如何区分这个“假点击”事件和真实事件 (这是一个非常简化的示例;实际代码正在使用jQuery(万一jQuery碰巧确认了这一点,并且对此进行了修

每次我通过按enter键提交表单时,关联表单中第一个
上的
click()
函数都会被触发。问题是(除了我觉得这种行为很奇怪之外)它实际上是一个点击事件,与实际点击按钮没有区别。如果它在我的提交按钮上触发了偶数,我会接受它

问题是,在这种情况下,第一个按钮与实际表单无关,它实际上位于一个隐藏的弹出窗口中

那么确切的问题是:为什么会发生这种情况?我如何预防它?我如何区分这个“假点击”事件和真实事件

(这是一个非常简化的示例;实际代码正在使用jQuery(万一jQuery碰巧确认了这一点,并且对此进行了修复),但实际问题与jQuery无关)


按钮A
按钮B


请不要建议“移动按钮”

我的建议是,如果
与表单无关,并且还控制一个隐藏的弹出窗口,那么请将其从
的上下文中取出并放置在其他位置。这也将解决您的点击问题。

-snip-

编辑

按钮A
按钮B

事实上我把它拿回来了。。。原因要具体得多,简单得多。Submit是w3c指定的
的默认类型。因此,将表单上的按钮
type
attributes留空,您就创建了三个提交按钮,当您点击enter时,它选择了第一个按钮(喜欢这个站点上的
样式:P)。有关w3c信息和更新的fiddle,请参阅。您的
按钮
元素没有
类型
属性。Firebug告诉我他们的
type
DOM属性被设置为
submit
(可能是浏览器干扰)。将每个按钮的
类型设置为
按钮可以解决此问题。此外,HTML5规范在
type
属性上有这样一句话:缺少的默认值是提交按钮状态。@Matt McDonald-谢谢!:)谢谢,根据Matt对原始问题的评论,这显然也可以通过执行
@cWalves啊,没有看到他的评论来解决不管怎么说,你的回答是第一个:)
<form>
    <input>
    <button onclick="alert('button A click');">Button A</button>
    <button onclick="alert('button B click');">Button B</button>
    <input type="submit" value="Submit Button">
</form>
<form>
    <input>
    <button type="button" onclick="alert('button A click');">Button A</button>
    <button type="button" onclick="alert('button A click');">Button B</button>
    <input type="submit" onclick="alert('button Submit click');" value="Submit Button">
</form>