2010-12-11 7 views
0

Ich habe ein Formular mit zwei Schaltflächen, einem Senden-Button und einem Abbrechen/Schließen-Button. Wenn der Benutzer auf "Senden" klickt, werden die eingegebenen Daten mit http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/ validiert. Wenn alles validiert ist, wird das Formular mit jQuery/AJAX gesendet. Das alles funktioniert gut und dandy. Ich habe allerdings Probleme mit der Abbrechen-Schaltfläche. Ich möchte, dass der Abbrechen-Button eine Bestätigung benötigt. Wenn der Benutzer fortfährt, werden sie auf eine Seite meiner Wahl gebracht. Wenn sie entscheiden, dass sie nicht abbrechen wollen, dann werden sie einfach auf der Seite gelassen. Es ist der letzte Teil, der nicht funktioniert.Wie kann ich ein Formular von Verarbeitung/Einreichen stoppen, die Jquery AJAX-Übermittlung verwendet?

Meine Form Code sieht wie folgt aus:

<form name="createPage" id="createPage" method="post" action="pager.php" class="ajax updateForm"> 
<input name="whatever" type="text" /> 
      <button type="submit" id="submitQuickSave" class="submitSave"><span>save</span></button> 
      <button type="submit" id="submitCancel" class="submitClose" onclick='confirm_close()'><span>close</span></button> 
</form> 

Mein aktueller abbrechen Skript wie folgt aussieht. Wenn der Benutzer tatsächlich abbrechen möchte, entbinde ich das Senden des Formulars, damit die Validierung nicht ausgeführt wird. Das Formular wird dann zum Übergeben weitergeleitet und enthält den Abbruch als Parameter im Aktionsattribut. Ich kümmere mich um den Kündigungsserver und leite den Benutzer auf eine neue Seite.

function confirm_close() 
{ 
var r=confirm("All changes since your last save operation will be discarded."); 
if (r==true) 
    { 
    $(".ajax").unbind("submit"); 
    } 
else 
    { 

    } 
} 

ich kann nicht herausfinden, was in dem 'else' Argumente zu setzen. Was passiert ist, wenn die Benutzer die Stornierung stornieren (d. H., False zurückgeben), dann versucht das Formular immer noch zu senden. Ich kann es nicht stoppen. Ich habe von dieser Seite einige Dinge ausprobiert und andere ohne Erfolg:
event.stopImmediatePropogation
.abort()

Irgendwelche Ideen? Grundsätzlich, wie kann ich die Abbrechen/Schließen-Taste richtig funktionieren?

Antwort

3

Betrachten Sie separating your JavaScript from your HTML. In diesem Sinne könnte man den Handler für das Click-Ereignis schreiben Sie versuchen, wie diese abfangen:

$("button#cancel").click(function($event) { 
    var r = confirm("All changes since your last save operation will be discarded."); 
    if (r) { 
     $(".ajax").unbind("submit"); 
    } 
    else { 
     $event.preventDefault(); 
    } 
}); 

Sie würden Ihre HTML optimieren und fügen Sie ein id-Attribut auf die cancel Taste:

<button id="cancel" type="submit" value="cancel">Cancel</button>

Beispiel hier: http://jsfiddle.net/wvFDy/

Hoffnung, das hilft!

+0

Bingo. Danke vielmals. – technoTarek

0

Ich glaube, Sie nur

return false; 

Lassen Sie mich wissen, ob das funktioniert.

+0

Leider nein, die Ajax-Einreichung läuft noch. – technoTarek

Verwandte Themen