Je cherche une manière vraiment générique de "remplir" un formulaire basé sur une chaîne de paramètres en utilisant javascript.Générique pour remplir un formulaire en javascript
par exemple, si j'ai cette forme:
<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>
Je voudrais être en mesure de prendre une chaîne de param comme ceci: option1=2&option2=1
Et puis ont choisi les choses correctes en fonction de la options dans la chaîne de requête.
J'ai une sorte de solution laide où je passe par les enfants du formulaire et vérifie s'ils correspondent aux différentes clés, puis définissez les valeurs, mais je ne l'aime vraiment pas.
Je voudrais un nettoyeur, générique façon de le faire qui fonctionnerait pour n'importe quelle forme (en supposant que la chaîne de param avait toutes les bonnes clés). J'utilise le prototype de bibliothèque javascript, donc je serais heureux de recevoir des suggestions qui en profiteraient.
EDIT: Voici ce que je suis venu avec jusqu'à présent (en utilisant un prototype pour 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;
}
});
});
}
Je pense que cela pourrait être encore plus rapide/plus propre cependant.
+1 Je n'avais absolument aucune idée de cette méthode. Cela va faire gagner énormément de temps à l'avenir. Merci. –
Terminé en changeant 'document.someform' à' $ (formId) 'et c'est exactement ce que je cherchais. Merci encore! –
Vous pouvez raccourcir le code en utilisant la méthode Hash.each pour accéder aux paires de valeurs de clé: $ H (queryString.toQueryParams()). Each (fonction (paire) { Form.Element.setValue ($ ("someform") [paire.key], params [pair.value]); }); – aemkei