2016-07-20 19 views
0

Ich habe Formular, wo Benutzer Konto löschen kann. Es ist eine sehr einfache Form. Ich möchte, dass der Benutzer die Löschung des Kontos bestätigt. Ich habe Funktion Bestätigung. Ich konnte es nicht bearbeiten.Senden des Formulars nach Bestätigung

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); 
     } 
    }); 
} 

Dieser Code funktioniert nicht, schickt es nicht Form:

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

Wie soll ich meinen Code bearbeiten? UPD wenn ich return false; von return true ändern Formular wird immer gesendet!

+0

"Dieser Code funktioniert nicht". Was funktioniert daran nicht? –

+0

Es sendet kein Formular – Dev

+0

Welcher Teil funktioniert nicht? Führt das submit() aus? Gibt es einen Fehler in Ihrer Konsole? –

Antwort

0

Es sieht aus wie Sie eine Endlos-Schleife haben:

Wenn das Formular Sie
(1) eingereicht wird Ausführen des confirmation Funktion die Form zu überprüfen, und wenn alles in Ordnung ist sind Sie
(2) Auslöser der submit mit $("#user-form").submit();, die den Browser zurück zu (1) gehen, und diese Schleife wird nie enden.

Es gibt mehrere Möglichkeiten, dies zu lösen. Ich denke, der schnellste Weg, um eine globale Variable haben, die Ihnen sagen, wenn das Formular validiert wurde, und wenn ja - Rückkehr true innerhalb der submit Funktion vor dem Aufruf confirmation:

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

Innerhalb der einreichen Funktion:

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

Vergessen Sie nicht formConfirmed = true in den Code fancybox zu setzen.

Verwandte Themen