簡體   English   中英

jQuery-e.preventDefault難題/阻止默認后無法提交表單

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM