Ich bin auf der Suche nach einem wirklich generischen Weg, um ein Formular auf der Grundlage einer Parameter-Zeichenfolge mit Javascript auszufüllen.Generische Möglichkeit, ein Formular in Javascript auszufüllen
zum Beispiel, wenn ich diese Form haben:
<form id="someform">
<select name="option1">
<option value="1">1</option>
<option value="2">2</option>
</select>
<select name="option2">
<option value="1">1</option>
<option value="2">2</option>
</select>
</form>
ich in der Lage sein möchte eine param Zeichenfolge wie folgt zu übernehmen: option1=2&option2=1
Und haben dann die richtigen Dinge auf dem ausgewählten Basis Optionen in der Abfragezeichenfolge.
Ich habe eine Art hässliche Lösung, wo ich durch Kinder des Formulars gehen und prüfen, ob sie die verschiedenen Schlüssel entsprechen, dann legen Sie die Werte fest, aber ich mag es wirklich nicht.
Ich hätte gerne einen Reiniger, generische Art und Weise es zu tun, die für jede Form funktionieren würde (vorausgesetzt, die Param-Zeichenfolge hatte alle richtigen Schlüssel).
Ich benutze die Prototyp-Javascript-Bibliothek, so würde ich Anregungen begrüßen, die davon profitieren.
EDIT: das ist, was ich mit so weit habe kommen (mit Prototyp für Form.getElements(form)
)
function setFormOptions(formId, params) {
params = params.split('&');
params.each(function(pair) {
pair = pair.split('=');
var key = pair[0];
var val = pair[1];
Form.getElements(form).each(function(element) {
if(element.name == key) {
element.value = val;
}
});
});
}
Ich glaube, dass es noch schneller/Reiniger jedoch sein könnte.
+1 Ich hatte absolut keine Ahnung von dieser Methode. Das wird in Zukunft eine große Zeitersparnis sein. Vielen Dank. –
Am Ende änderte ich 'document.someform' zu' $ (formId) 'und das war genau das, was ich suchte. Danke noch einmal! –
Sie können den Code verkürzen, indem Sie die Hash.each-Methode verwenden, um auf Schlüsselwertpaare zuzugreifen: $ H (queryString.toQueryParams()). Je (function (pair)) { Form.Element.setValue ($ ("someform") [pair.key], params [pair.value]); }); – aemkei