2016-12-27 82 views
1

我試圖強制提交我的表單,問題是我使用bootboxjs (即使用異步代碼)在提交前進行確認對話框,這正是我想要的,也是以這種方式驗證所需的輸入。如何強制提交 - 提交事件中的異步代碼

這是我的JS代碼結構:

$("#myForm").submit(function(e){ 
    bootbox.confirm({ 
    message: "Are you sure?", 
    buttons: { 
     confirm: { 
      label: 'Yes', 
      className: 'btn-danger' 
     }, 
     cancel: { 
      label: 'NO, STOP!', 
      className: 'btn-primary' 
     } 
    }, 
    callback: function (result){ 
     if (result) 
     { 
     // Some code to set values to hidden inputs and another irrelevant stuff... 
     // The right command (that I didn't know) to force the form 
     } 
    } 
    }); 
    return false; 
}); 

我怎樣才能避免此問題並保留所需投入的驗證?

+0

你能澄清更多的問題瀏覽器的默認提交! – PacMan

+0

問題是,我不知道如何在做一些事情後強制**提交表單(請參閱我的問題中的JavaScript代碼)。 – candlejack

回答

1

您可以防止jQuery的事件,並使用原生一個給力,當你準備

$("#myForm").submit(function(e){ 
    // store reference to form due to callback context 
    var form = this; 

    bootbox.confirm({ 
    message: "Are you sure?", 
    buttons: {... }, 
    callback: function (result){ 
     if (result) 
     { 
     // Some code to set values to hidden inputs and another irrelevant stuff... 
     // Now use native submit 

     form.submit(); 
     } 
    } 
    }); 
    // prevents jQuery submit only 
    return false; 
}); 
+0

我想知道爲什麼$(「#myForm」)。submit();'與form.submit()不一樣?'請你澄清一下,我很好奇。 – candlejack

+1

因爲'this'不是一個jQuery對象...它是實際的元素....所以你沒有使用jQuery的submit(),但本地JavaScript'submit()'它繞過jQuery事件監聽器 – charlietfl

+0

太棒了!感謝您的解釋。我知道這是不重要的,但是你認爲有人可以通過閱讀這本書http://eloquentjavascript.net/來學習這種事情嗎? – candlejack