[英]jQuery - e.preventDefault conundrum / can't submit form after preventing default
目標:停止“提交”按鈕,確認字段,創建彈出式結果警報,關閉彈出式窗口時提交表單。
所以我有一個隱藏的popover div,當按下“提交”按鈕時,我這樣做是為了檢查某些條件並顯示彈出窗口:
$("form").submit(function(e) {
e.preventDefault();
if (($("#conditions").find("input:checkbox:checked").length ) || $('#radio_condition_1').is(":checked")) {
$("#popback").css('display', 'block');
}
});
然后,我認為這段代碼將在清除彈出窗口后提交表單:
$("#popback").click(function() {
$("#popback").css('display', 'none');
$("form").submit();
});
沒有:
$("form").submit();
第二個代碼可以很好地清除彈出窗口。 但是,插入了Submit函數后,它不僅不會清除彈出窗口,也不會提交表單。
注意:頁面上有兩種形式。
救命?
請執行以下操作:
$('form')[0].submit();
您擁有的$('form').submit()
會觸發Submit事件,從而再次觸發Submit處理程序,這又會阻止默認表單提交,而您又回到了起點!
第1步:加載上面的演示,您將在控制台中看到submit event triggered
。
步驟2:現在取消注釋$('form')[0].submit()
並注釋掉$('form').submit()
並單擊run
和viola ..表單被提交..繞過了submit
事件處理程序。
結論: ...見上文。
更新
如果頁面上有多個表單,可以將上面的代碼調整為相關表單的目標。 例如,要提交頁面上的第一個表單:
$('form').first()[0].submit();
或簡單地使用提供所需級別的特定性的任何選擇器,例如ID或CSS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.