2016-07-20 28 views
0

私はフォームを持っており、ユーザーはアカウントを削除できます。それはとてもシンプルな形です。私は、ユーザーにアカウントの削除を確認させたい。私は機能確認を持っています。編集できませんでした。確認後に送信フォーム

$(document).ready(function(){ 
     $("form").submit(function() { 
      confirmation("Delete?", "Yes", "No", function (result) { 
       if(result) $("#user-form").submit(); 
      }); 
      return false; 
     }) 
    }); 

どのように私は私のコードを編集する必要があります。

function confirmation(message, ok, cancel, callback) { 
    if (!$('#confirmation').length) { 
     var string = 
     'some html'; 
     $('<div/>').attr('id', 'confirmation').css("display", "none").html(string).appendTo('body'); 
    } 

    var result; 
    $.fancybox($('#confirmation'), { 
     modal : true, 
     autoSize: true, 
     beforeShow: function() { 
      $("#confirmation-message").text(message); 
      $("#confirmation-ok-caption").text(ok); 
      $("#confirmation-cancel-caption").text(cancel); 

      $("#confirmation-btn-ok").unbind("click").bind("click", function() { 
       result = true; 
       $.fancybox.close(); 
       return false; 
      }) 
      $("#confirmation-btn-cancel").unbind("click").bind("click", function() { 
       result = false; 
       $.fancybox.close(); 
       return false; 
      }) 
     }, 
     afterClose: function() { 
      callback.call(this, result); 
     } 
    }); 
} 

このコードは動作しません、それがフォームを送信しませんか? UPD変更する場合return false;によってreturn trueフォームが常に送信されます!フォームがフォームを検証するためにconfirmation機能を
(1)実行していて、すべてがOKであれば、あなたが
(2)トリガーsubmitある提出された場合

:あなたは無限ループを持っているように見えます

+0

"このコードは機能しません"それについては何ができませんか? –

+0

フォームを送信しません – Dev

+0

どの部分がうまくいかないのですか? submit()は実行されますか?あなたのコンソールにエラーが出ますか? –

答えて

0

$("#user-form").submit();を使用すると、ブラウザは(1)に戻り、このループは決して終了しません。

これを解決するにはいくつかの方法があります。私は、最速の方法は、フォームが検証されたかどうかを教えてくれますグローバル変数を持つことである、と推測しそうならば - confirmation呼び出す前にsubmit関数内trueを返す:提出関数の内部

var formConfirmed = false; 
function confirmation(message, ok, cancel, callback) { 
... 

を:

$(document).ready(function(){ 
    $("form").submit(function() { 
     if (formConfirmed) { 
      return true; 
     } 

コードの中にformConfirmed = trueを設定することを忘れないでください。

関連する問題