2014-04-03 6 views
7

Ich benutze jQuery Schritte (https://github.com/rstaib/jquery-steps/wiki), um Schritt für Schritt Formular zum Ausfüllen Benutzer zu erstellen. Es funktioniert gut, aber ich muss es zurücksetzen können. Sobald der Benutzer das Formular abgeschickt hat (mit Ajax, damit die Seite nicht aktualisiert wird), möchte ich einen neuen Assistenten vorstellen.jQuery Steps - Reset Wizard ohne Seite neu laden

Gibt es eine Möglichkeit, den Assistenten zurückzusetzen? Oder vielleicht neu zu laden, ohne die Seite neu zu laden?

Antwort

8

Ich konnte meinen Assistenten für jQuery-Schritte zurücksetzen, indem ich der Lösung here ein paar Zeilen Code hinzufügte und ein paar zusätzliche Codezeilen hinzufügte, um die CSS-Klassen zu entfernen. Sie müssen das Formular immer noch mit Ihrer bevorzugten Bibliothek zurücksetzen, bevor oder nachdem Sie diese Funktion aufgerufen haben.

$.fn.steps.reset = function() { 
    var wizard = this, 
    options = getOptions(this), 
    state = getState(this); 
    goToStep(wizard, options, state, 0); 

    for (i = 1; i < state.stepCount; i++) { 
    var stepAnchor = getStepAnchor(wizard, i); 
    stepAnchor.parent().removeClass("done")._enableAria(false); 
    } 
}; 
+0

Ja, ich habe die gleiche Lösung gemacht. – MeIr

+1

Ich habe eine Pull-Anfrage erstellt: https://github.com/rstaib/jquery-steps/pull/149. – Jonny

+3

ReferenceError: getOptions ist nicht definiert –

0
You can user this function after submitting your form: 

function resetForm(id_form){ 
    $("#" + id_form).find('input[type="text"]').val(''); 
    $("#" + id_form).find('input[type="password"]').val(''); 
    $("#" + id_form).find('input[type="checkbox"]').removeAttr("checked"); 
    $("#" + id_form).find('select option').removeAttr("selected"); 
    $("#" + id_form).find('textarea').val(''); 
} 

Best regards! 
+0

jQuery Schritte zum Reset - ist ein UI-Assistenten mit den Schritten und mehrere Formen. Ich muss den gesamten Assistenten nicht nur auf ein einzelnes Formular zurücksetzen. PS: Momentan geh ich genau was du vorgeschlagen hast ABER ich möchte den gesamten Wizard nicht einfach nur zurücksetzen. – MeIr

1

können Sie verwenden jQuery Form Plugin , zurücksetzen oder Ihre Form Clearing dann ist es sehr einfach

$('#myFormId').resetForm(); 

Oder

$('#myFormId').clearForm(); 

Oder nur Spezialgebiete

$('#myFormId .specialFields').clearFields(); 
+0

jQuery Steps - ist eine Assistenten-Benutzeroberfläche mit Schritten und mehreren Formularen. Ich muss den gesamten Assistenten nicht nur auf ein einzelnes Formular zurücksetzen. PS: Momentan geh ich genau was du vorgeschlagen hast ABER ich möchte den gesamten Wizard nicht einfach nur zurücksetzen. – MeIr

+0

Melr, Da Sie das Step-Plugin + Formular (s) verwenden, müssen Sie Ihre Webapp in zwei Schritten zurücksetzen. Erster Schritt setzt deine Webform (en) zurück -> du kannst dafür das from-Plugin verwenden. Zweitens müssen Sie Schritt Webapp zurücksetzen. ASardar hat eine schöne Lösung [Setze den Index der Schritte zurück, wenn form onFinished] (https://github.com/rstaib/jquery-steps/issues/26). – Bunkerbuster

+0

Momentan gehe ich genau das was du vorgeschlagen hast. Das Plugin "steps" wird jedoch nicht vollständig zurückgesetzt: Tabs sind immer noch hervorgehoben und mehr. – MeIr

1

eine kleine Korrektur mit der Custom-Reset-Funktion:

$.fn.steps.reset = function() { 
var wizard = this, 
options = getOptions(this), 
state = getState(this); 

if(state.currentIndex>0) 
{ 
    goToStep(wizard, options, state, 0); 

    for (i = 1; i < state.stepCount; i++) { 
    var stepAnchor = getStepAnchor(wizard, i); 
    stepAnchor.parent().removeClass("done")._enableAria(false); 
    } 
} 
}; 

ich hinzugefügt, wenn, falls Sie versuchen, in Schritt 0.

Verwandte Themen