Hintergrund Ich habe zwei Auswahlfelder miteinander verkettet: Dauer und Häufigkeit. Wenn der Benutzer eine Frequenz auswählt, werden die Daueroptionen dynamisch eingefügt. Es gibt Standardoptionen, aber diese sind nur so, dass das Feld nicht leer ist, wenn der Benutzer es erweitert.Wie werden dynamisch generierte Optionen für ein Auswahlfeld wieder aufgefüllt?
Zum Beispiel sind die Häufigkeitsoptionen "Tag", "anderer Tag" und "Woche". Wenn ich "Tag" wähle, ändern sich die Häufigkeitsoptionen in "5 Tage", "15 Tage" und "30 Tage".
Problem Das Problem kommt, wenn der Benutzer das Formular mit Fehlern einreicht, wird das Formular zurück mit allen Formularfeldern wieder aufgefüllt und die Fehler hervorgehoben - mit Ausnahme des Frequenzauswahlfeld - der Optionen sind dynamisch erzeugt. Es ist nicht markiert und die Optionen sind die Standardoptionen.
Gibt es eine Möglichkeit, dass diese Optionen erneut ausgefüllt werden können, wenn der Benutzer einen Fehler einreicht. Wir machen ziemlich viel JavaScript-Validierung, daher sollte diese Situation nicht so oft passieren, aber wir möchten, dass ein Fehler so schmerzlos wie möglich für die Benutzer gemacht wird.
Code Ich benutze jquery und ein jquery-Plugin namens Kaskade, um die beiden Felder miteinander zu verketten. (http://plugins.jquery.com/project/cascade)
Hier ist meine benutzerdefinierte JavaScript.
Dieses Skript erzeugt die Liste der Optionen:
var list1 = [
{'When':'86400','Value':' ','Text':' '},
{'When':'172800','Value':' ','Text':' '},
{'When':'604800','Value':' ','Text':' '},
{'When':'86400','Value':'432000','Text':'5 days'},
{'When':'86400','Value':'1296000','Text':'15 days'},
{'When':'86400','Value':'2505600','Text':'30 days'},
{'When':'172800','Value':'1296000','Text':'15 days'},
{'When':'172800','Value':'2505600','Text':'30 days'},
{'When':'172800','Value':'3888000','Text':'45 days'},
{'When':'604800','Value':'2505600','Text':'4 weeks'},
{'When':'604800','Value':'3715200','Text':'6 weeks'},
{'When':'604800','Value':'4924800','Text':'8 weeks'}
];
function commonTemplate(item) {
return "<option value='" + item.Value + "'>" + item.Text + "</option>";
};
function commonMatch(selectedValue) {
return this.When == selectedValue;
};
Und das ist das Skript, das die Erzeugung der Auswahloptionen löst:
jQuery("#duration).cascade("#frequency",{
list: list1,
template: commonTemplate,
match: commonMatch
})
Die Frage Irgendwelche Gedanken darüber, wie man Abrufen der dynamisch generierten Häufigkeitsoptionen zum erneuten Auffüllen, wenn das Formular mit Fehlern an den Browser zurückgegeben wird? Könnte ich entweder das Kaskaden-Plugin verwenden, das ich gerade benutze, oder eine andere Methode?
Hilfe wird sehr geschätzt. :-)
+ 1 für eine gut formulierte Frage von einem ersten Benutzer. Es ist fast zu selten ein Ereignis um diese Teile ... –
Danke, Paolo. :) Ich wollte wirklich sicherstellen, dass ich eine gute Antwort bekommen habe, also habe ich eine gründliche Frage gestellt. Hoffe ich bin nicht zu übertrieben gegangen. – Rick