每次按输入提交表单时,相关表单中第一个click()
上的<button>
函数都会被触发。问题(除了我发现这种行为很奇怪的事实)是它实际上是一个click
事件,与实际点击按钮无法区分。如果它在我的提交按钮上触发了偶数,我就可以了。
问题在于,在这种情况下,第一个按钮与实际表单无关,它实际上是一个隐藏的弹出窗口。
所以确切的问题:为什么会发生这种情况?我该如何预防呢?我如何区分这个“虚假点击”事件和真实事件?
(这是一个非常简单的例子;实际的代码是使用jQuery(如果jQuery碰巧承认这个并且有一个修复它),但实际问题与jQuery无关)
<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>
请不要“移动按钮”的建议
答案 0 :(得分:6)
-snip -
<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>
实际上我把它拿回来...原因是比这更具体和简单。提交是w3c指定的<button>
的默认类型。因此,通过在表单上保留按钮type
属性为空,您正在制作三个提交按钮,当您点击输入时,它会选择第一个按钮(喜欢<kbd>
样式本网站:P)。有关w3c信息,请参阅here;有关更新的小提琴,请参阅here
答案 1 :(得分:-1)
我的建议是,如果<button>
与表单无关并且还控制隐藏弹出窗口,则将其从<form>
的上下文中取出并放在其他位置。这也可以解决您的点击问题。