En utilisant core jQuery, comment supprimez-vous toutes les options d'une boîte de sélection, puis ajoutez une option et sélectionnez-la?
Ma case de sélection est la suivante.
<Select id="mySelect" size="9"> </Select>
EDIT: Le code suivant a été utile pour le chaînage. Cependant (dans Internet Explorer) .val('whatever')
n'a pas sélectionné l'option qui a été ajoutée. (J'ai utilisé la même «valeur» dans les deux .append
et .val
.)
$('#mySelect').find('option').remove().end()
.append('<option value="whatever">text</option>').val('whatever');
EDIT: En essayant de le faire imiter ce code, j'utilise le code suivant chaque fois que la page / le formulaire est réinitialisé. Cette case de sélection est remplie par un ensemble de boutons radio. .focus()
était plus proche, mais l'option ne semblait pas sélectionnée comme elle le fait avec .selected= "true"
. Rien ne va mal avec mon code existant - j'essaie juste d'apprendre jQuery.
var mySelect = document.getElementById('mySelect');
mySelect.options.length = 0;
mySelect.options[0] = new Option ("Foo (only choice)", "Foo");
mySelect.options[0].selected="true";
EDIT: la réponse sélectionnée était proche de ce dont j'avais besoin. Cela a fonctionné pour moi:
$('#mySelect').children().remove().end()
.append('<option selected value="whatever">text</option>') ;
Mais les deux réponses m'ont conduit à ma solution finale ..
la source
.append($("<option></option>").attr("value", '123').text('ABC!')
.append($("<option></option>", {'value':'123'}).text('ABC!')
la source
empty()
s'est avéré plus rapide bien sûr;) jsperf.com/find-remove-vs-empty.val('whatever')
à la fin de la chaîne comme dans la réponse de Matt.pourquoi ne pas simplement utiliser du javascript simple?
la source
Si votre objectif est de supprimer toutes les options de la sélection, sauf la première (généralement l'option «Veuillez sélectionner un élément»), vous pouvez utiliser:
la source
J'ai eu un bogue dans IE7 (fonctionne très bien dans IE6) où l'utilisation des méthodes jQuery ci-dessus effacerait la sélection dans le DOM mais pas à l'écran. En utilisant la barre d'outils du développeur IE, je pouvais confirmer que la sélection avait été effacée et contenait les nouveaux éléments, mais visuellement, la sélection montrait toujours les anciens éléments - même si vous ne pouviez pas les sélectionner.
Le correctif consistait à utiliser les méthodes / propriétés DOM standard (comme l'original de l'affiche) pour effacer plutôt que jQuery - toujours en utilisant jQuery pour ajouter des options.
la source
Je ne sais pas exactement ce que vous entendez par "ajouter un et sélectionnez-le", car il sera sélectionné par défaut de toute façon. Mais, si vous deviez en ajouter plusieurs, cela aurait plus de sens. Que diriez-vous de quelque chose comme:
Réponse à "EDIT" : Pouvez-vous préciser ce que vous entendez par "Cette case de sélection est remplie par un ensemble de boutons radio"? Un
<select>
élément ne peut pas (légalement) contenir des<input type="radio">
éléments.la source
la source
la source
Grâce aux réponses que j'ai reçues, j'ai pu créer quelque chose comme le suivant, qui correspond à mes besoins. Ma question était quelque peu ambiguë. Merci d'avoir suivi. Mon dernier problème a été résolu en incluant "sélectionné" dans l'option que je voulais sélectionner.
la source
Que diriez-vous de simplement changer le code HTML en nouvelles données.
Un autre exemple:
la source
Tout d'abord, effacez toutes les options existantes, sauf la première (- Select--)
Ajouter de nouvelles valeurs d'options en utilisant une boucle une par une
la source
J'ai trouvé sur le net quelque chose comme ci-dessous. Avec des milliers d'options comme dans ma situation, c'est beaucoup plus rapide que
.empty()
ou à.find().remove()
partir de jQuery.Plus d'infos ici .
la source
Autrement:
Sous ce lien, il existe de bonnes pratiques https://api.jquery.com/select/
la source
La première ligne de code supprimera toutes les options d'une boîte de sélection car aucun critère de recherche d'option n'a été mentionné.
La deuxième ligne de code ajoutera l'option avec la valeur spécifiée ("testValue") et le texte ("TestText").
la source
S'appuyant sur la réponse de Mauretto, c'est un peu plus facile à lire et à comprendre:
Pour supprimer toutes les options sauf une avec une valeur spécifique, vous pouvez utiliser ceci:
Ce serait mieux si l'option à ajouter était déjà là.
la source
Utilise le jquery prop () pour effacer l'option sélectionnée
la source
Cela remplacera votre mySelect existant par un nouveau mySelect.
la source
Vous pouvez le faire simplement en remplaçant html
la source
la source
la source
J'ai vu ce code dans Select2 - Clearing Selections
Ce code fonctionne bien avec jQuery même sans Select2
la source
J'espère que cela fonctionnera
la source
la source