2012-07-11 74 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