2016-12-27 19 views
1

強制的にフォームを送信しようとしていますが、問題は、非同期コードを使用するbootboxjs を使用して送信する前に確認ダイアログを作成することです。必要な入力はそのように検証されます。強制的に送信する方法 - submitイベントの非同期コード

これは私の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 submits()ではなくjQueryイベントリスナーをバイパスするネイティブのjavascriptのsubmit()です。 – charlietfl

+0

素晴らしいです!説明ありがとう。私はこれが一般的だと知っていますが、誰かがこの本を読むことでこの種のことを学ぶことができると思いますか?http://eloquentjavascript.net/? – candlejack

関連する問題