Dernière fois I asked about the reverse process, et obtenu des réponses très efficaces. Je vise les moindres lignes de code ici. J'ai une forme de champs et un tableau associatif dans le format {fieldname: data}, je veux remplir un formulaire correspondant avec celui-ci.Remplir un formulaire avec des données d'un tableau associatif avec jQuery
Répondre
Quand je l'ai fait pour une projet, j'ai trouvé que la définition de la valeur des champs de sélection, boutons radio et cases à cocher nécessitait un code plus complexe, quelque chose du genre:
jQuery.each(data, function (name,value) {
jQuery("input[name='"+name+"'],select[name='"+name+"']").each(function() {
switch (this.nodeName.toLowerCase()) {
case "input":
switch (this.type) {
case "radio":
case "checkbox":
if (this.value==value) { jQuery(this).click(); }
break;
default:
jQuery(this).val(value);
break;
}
break;
case "select":
jQuery("option",this).each(function(){
if (this.value==value) { this.selected=true; }
});
break;
}
});
});
Je n'ai pas testé ce code donc j'espère qu'il n'y a pas d'erreurs de syntaxe stupide que j'aurais dû attraper. J'espère que cela t'aides.
Je ne suis pas autorisé à commenter les commentaires ici (pour le moment), donc .... Comme indiqué dans le commentaire, la méthode jQuery .val (val) gère la configuration des cases d'option, des cases à cocher et des sélections.
Vous devrez toujours sélectionner [nom = ...] dans votre modèle de sélecteur jQuery ou les éléments sélectionnés ne seront pas mis à jour.
Si vos éléments de formulaire ont leur carte d'identité mis à la nomchamp:
$.each(myAssocArry, function(i,val) { $('#'+i).val(val); });
Cela a l'air de manquer les cases à cocher. Il ne les vérifie pas à la place, il change la valeur définie pour eux. – Pentium10
ou similaire à la suggestion précédente en utilisant les noms de champs au lieu de ids:
$.each(data, function(name,value) {
$("input[name='" + name + "']").val(value);
});
Bonne réponse, mais cela ne ramasse pas les boîtes de sélection ou les zones de texte. Peut-être changer "input [name = ...]" en "* [name = ...]"? En outre, je viens de corriger une erreur de syntaxe dans votre code. – nickf
Je ne suis pas sûr si '*' fonctionnerait, et il pourrait être quelque peu intensif si c'est le cas. Vous pouvez ajouter les autres options séparées par des virgules - $ ("input [nom ...], sélectionnez [nom ...], textarea [nom ...]). Val ... –
Vous pouvez faire $ (": input [name = ... ") et il devrait ramasser les sélections et les zones de texte (notez le deux-points) –
Je n'ai pas vu le handle jQuery passer une seule valeur (non-array) dans val() pour une entrée de radio ou checkbox. Vous devez être sûr d'envelopper la valeur unique dans un tableau.
Je n'ai généralement pas voulu modifier les valeurs des entrées bouton-ish, donc je les filtre.
Voici une fonction qui gère l'habillage du tableau, le filtrage des boutons et qui limite également la sélection d'entrée à un élément de formulaire donné. Le paramètre de formulaire est facultatif. Si elle est désactivée/null/indéfinie, toutes les entrées de la page seront sélectionnées.
function populateForm(data, form) {
$.each(data, function(name, value) {
var input = $(":input[name='" + name + "']:not(:button,:reset,:submit,:image)", form);
input.val((!$.isArray(value) && (input.is(':checkbox') || input.is(':radio'))) ? [ value ] : value);
});
};
- 1. Remplir un formulaire avec C#
- 2. Comparer tableau associatif avec des valeurs de tableau standard PHP
- 3. Remplir le tableau avec des entiers consécutifs
- 4. Remplir dynamiquement les valeurs de formulaire avec jQuery
- 5. Comment aplatir un tableau associatif dans un tableau avec seulement des valeurs en PHP?
- 6. Modification des valeurs de formulaire avec beforeSubmit avec jQuery ajaxSubmit?
- 7. Modifier un tableau associatif dans un tableau indexé/obtenir un Zend_Table_Row_Abstract comme non-associatif
- 8. Remplir un calendrier avec des rendez-vous
- 9. Remplir une feuille de calcul avec un tableau
- 10. Remplir les propriétés d'un objet avec un tableau?
- 11. Comment puis-je remplir une liste déroulante avec des données?
- 12. PHP tableau associatif
- 13. Tableau associatif bidimensionnel en PHP
- 14. C# équivaut à un tableau associatif php?
- 15. Comment imprimer un élément de tableau associatif?
- 16. Comment soumettre un formulaire avec jQuery?
- 17. Soumettre un formulaire avec des liens et jQuery
- 18. Tableau associatif multidimensionnel dans VB.NET
- 19. tableau Associatif sans toString, etc
- 20. Remplir la collection avec des tableaux
- 21. Remplir ListView avec les données du serveur
- 22. Comment remplir chaque DataGridViewComboBoxCell avec des données différentes?
- 23. Zend_Db_Table - tableau associatif plutôt l'objet
- 24. Comment rechercher efficacement un tableau pour remplir des champs de formulaire?
- 25. Créer un tableau associatif avec les touches dynamiques dans Actionscript 2
- 26. C++ de tableau associatif avec des types arbitraires pour les valeurs
- 27. Comment puis-je remplir un jeu de données avec des données d'un IQueryable?
- 28. Outil pour remplir un ensemble de données .Net avec des données
- 29. Un bon outil pour remplir la base de données avec des données factices?
- 30. Quel est le moyen le plus rapide de remplir un tableau avec des nombres en PHP?
jetez un oeil à la fonction val(), il gère tous ces cas pour vous, je crois – nickf
Fonctionne bien, mais en effet la fonction val() s'occupe de select et d'autres types, donc vous n'avez pas besoin d'utiliser le switch, un simple jQuery (this) .val (value) dans tous les cas est suffisant. – gaborous