2012-07-11 72 views
1

为了防止意外提交,并确保用户doublechecks他输入的所有信息,我推迟了提交表单,弹出另一个按钮,询问他是否真的想提交...提交发生了两次与jQuery

不幸的是,当用户点击'否'并且稍后用'是'按钮提交表单时,它将提交两次。它的工作原理,当用户没有点击“不”之前...

我准备了一个小jsfiddle here的第一次,这就是我的代码:

$('#form').on('click','#submitbutton',function(e){ 
     e.preventDefault() 
     $('#formchecker').show() 
     $('#doit').click(function(e2){ 
      e2.preventDefault() 
      alert('I will submit as you say')     
     }) 
     $('#dont').click(function(e2){ 
      e2.preventDefault() 
      $('#formchecker').hide() 
     }) 
}) 

点击之前“罗”时,你可以看到提交'是',则会有多个警告框。有人得到一个暗示为什么它的行为?

回答

4

每次单击提交按钮时,您都将点击事件添加到yes和no按钮,但是您永远不会清除它们,所以如果您要单击提交然后没有5次,最后单击yes会启动5次。

您应该在绑定新事件之前点击事件,或者不要在提交按钮的点击事件中绑定点击事件。

+0

这是我眼中的正确答案,谢谢:)也许别人有另一个建议,但否则我会尽快接受! – Anonymous 2012-07-11 20:09:15

3

您应该监听onSubmit事件而不是onClick事件。

+0

你能说清楚在这种情况下会发生什么变化吗? – Anonymous 2012-07-11 20:18:51