2017-09-02 82 views
2

我試圖表現出確認對話框提交表單前:關不能正常工作

$('body').on('submit', 'form[data-confirm-dialog-text]', (e) -> 
    form = $(this) 
    e.preventDefault() 
     $.show_dialog(form.data('confirm-dialog-title'), form.data('confirm-dialog-text'), form.data('ok-text'), form.data('cancel-text'), (-> 
     form.off('submit').submit() 
    )) 
) 

成功時我做到以下幾點:form.off('submit').submit(),但繼續得到確認對話框,這意味着這種形式是不是入站。

如果我將$('body').on('submit', 'form[data-confirm-dialog-text]'更改爲$('form[data-confirm-dialog-text]').on('submit',一切正常。有什麼區別,我做錯了什麼?

+1

因爲事件被綁定到身體,而不是形式.... – epascarello

回答

1

該事件被綁定到body,你應該使用body刪除事件。因此改變,

form.off('submit').submit() 

$('body').off('submit', 'form[data-confirm-dialog-text]'); 
form.submit(); 
1

從jQuery的.off()文檔:

.off()方法去除附着與.on()事件處理程序。使用不帶參數調用.off()將刪除附加到元素的所有處理程序。通過提供事件名稱,名稱空間,選擇器或處理函數名稱的組合,可以在元素上刪除特定事件處理程序。 當給出多個過濾參數時,所提供的所有參數必須匹配才能移除的事件處理程序。

這意味着你應該使用相同的參數.off().on。因此,嘗試改變:

form.off('submit').submit(); 

要:

$('body').off('submit', 'form[data-confirm-dialog-text]'); 
form.submit();