Je suis un peu perdu.
Je reçois ce Json: et j'aimerais mettre tout cela dans une sélection avec des options et des optgroups. En fait, l'optgroup devrait être une catégorie p> Je voudrais quelque chose comme ceci: p> p> aujourd'hui je n'ai fait que «m Trop de: P> $(document).ready(function () {
$.getJSON("5.php", {
val: $(this).val()
}, function (data) {
$.each(data, function (i, item) {
$("<option/>").attr("value", item.id).append(item.name).appendTo("optgroup");
});
});
});
4 Réponses :
En supposant que les optgroups existent déjà, changez ceci ... à ceci ... p> http://jsfiddle.net/fg9lg/ p> S'ils n'existent pas, vous avez besoin Pour les créer, bien que je suggère une restructuration de votre réponse JSON pour que chaque article soit imbriqué dans la catégorie appropriée. p> comme ça ... p> var product = $('#product');
$.each(data, function (key, cat) {
var group = $('<optgroup>',{label:key});
$.each(cat,function(i,item) {
$("<option/>",{value:item.id,text:item.name})
.appendTo(group);
});
group.appendTo( product );
});
Le nom d'utilisateur épique est tout ce que j'ai à dire.
@ Donutdan4114 Merci. C'était soit ça ou "regarde-moi! Regardez-moi!".
Merci beaucoup!! J'ai modifié mon Json et j'ai fait comme vous l'avez dit! Ça marche parfaitement!
Sinon, aurait pu utiliser une carte / réduire sur l'ensemble d'origine pour obtenir la liste des groupes, en tant que semoir ... juste la même chose, bonne suggestion.
@ Tracker1: En regardant en arrière sur ma deuxième solution, je vois que c'est imparfait. Je devrais avoir les catégories structurées comme une éventail d'objets aussi bien que l'ordre d'énumération ne sera pas garanti. N'hésitez pas à ajouter plus de solutions comme la carte / réduire si vous en avez envie.
Juste génial. Sauvé beaucoup de temps. Merci beaucoup
+1 Cette approche a fonctionné pour moi, mais cela ne fonctionne que après avoir effectué un rafraîchissement sur le multiiselect - $ ("# produit"). Multisélecect ("rafraîchir"); donc cela pourrait sauver quelqu'un d'autre une demi-journée de tête rayer
Si j'étais vous, j'utiliserais une petite bibliothèque appelée Voir ce code ci-dessous et vous pouvez également voir cette Si vous hésitez à utiliser la bibliothèque de la sous-traitance, vous pouvez considérer cette fonction Utilisation: P> groupby code> fonction: p>
var groupData = groupBy(data, function (obj) {
return obj.category;
});
Si vous souhaitez vous tenir au format JSON, ce qui suit répondrait à votre question: espère que cela aide! P> P>
Je sais que ce fil est très vieux, mais j'avais besoin de quelque chose de similaire et je suis arrivé avec ça. Il ajoute automatiquement des optgroups si nécessaire et les peupler des options. De plus, cela fonctionne à la fois lorsque vous avez des groupes optgroups et quand vous ne le faites pas.