J'ai un contrôle de sélection, et dans une variable javascript, j'ai une chaîne de texte.
En utilisant jQuery, je veux définir l'élément sélectionné du contrôle de sélection comme étant l'élément avec la description textuelle que j'ai (par opposition à la valeur, que je n'ai pas).
Je sais que le définir par valeur est assez trivial. par exemple
$("#my-select").val(myVal);
Mais je suis un peu perplexe sur le faire via la description textuelle. Je suppose qu'il doit y avoir un moyen de tirer la valeur de la description textuelle, mais mon cerveau est trop vendredi après-midi pour pouvoir le déterminer.
javascript
jquery
DanSingerman
la source
la source
Réponses:
Sélectionner par description pour jQuery v1.6 +
Versions de jQuery inférieures à 1,6 et supérieures ou égales à 1,4
Notez que bien que cette approche fonctionne dans les versions supérieures à 1,6 mais inférieures à 1,9, elle est déconseillée depuis 1.6. Cela ne fonctionnera pas dans jQuery 1.9+.
Versions précédentes
val()
devrait gérer les deux cas.la source
value
si l'attribut a été spécifié, et sélectionner uniquement par texte si l'value
attribut est manquant. Donc, dans cet exemple$('select').val('Two')
, sélectionnera la deuxième option dans 1.3.x, mais ne fera rien dans 1.4.x.Je n'ai pas testé cela, mais cela pourrait fonctionner pour vous.
la source
Essayez ceci ... pour sélectionner l'option avec le texte myText
la source
$("#my-Select option[text=" + myText +"]").get(0).selected = true;
de temps en temps me résoudre au style classique : (....prop
au lieu de.attr
; la cause du changement est que dans 1.9 jQuery a désactivé les anciens hacks qui vous.attr
permettaient de modifier certaines propriétés DOM ainsi que les attributs HTML. (Googlejavascript dom properties vs attributes
si vous ne connaissez pas la distinction.).prop('selected', true)
au lieu de.attr('selected', 'selected')
pour la compatibilité jQuery 1.9+.Je le fais de cette façon (jQuery 1.9.1)
Remarque: n'oubliez pas le changement (), j'ai dû chercher trop longtemps à cause de cela :)
la source
renverra la valeur de la première option contenant votre description textuelle. Testé cela et fonctionne.
la source
Pour éviter toutes les complications de la version jQuery, je recommande honnêtement d'utiliser l'une de ces fonctions javascript vraiment simples ...
la source
Je sais que c'est un ancien article, mais je n'ai pas pu le sélectionner par texte en utilisant jQuery 1.10.3 et les solutions ci-dessus. J'ai fini par utiliser le code suivant (variation de la solution de spoulson):
J'espère que cela aide quelqu'un.
la source
Cette ligne a fonctionné:
la source
L'instruction if fait une correspondance exacte avec "deux" et "deux trois" ne sera pas mise en correspondance
la source
Le moyen le plus simple avec 1.7+ est:
1.9+
Testé et fonctionne.
la source
.prop
pour changer les propriétés DOM, pas.attr
(ce qui est pour les attributs HTML / DOM). Voir stackoverflow.com/q/5874652/1709587Voici un moyen très simple. plz l'utiliser
la source
jetez un oeil au plugin jquery selectedbox
Sélectionnez les options par valeur, en utilisant une chaîne comme paramètre
$("#myselect2").selectOptions("Value 1");
ou une expression régulière$("#myselect2").selectOptions(/^val/i);
.Vous pouvez également effacer les options déjà sélectionnées:
$("#myselect2").selectOptions("Value 2", true);
la source
Juste sur une note secondaire. Ma valeur sélectionnée n'était pas définie. Et j'ai cherché partout sur le net. En fait, j'ai dû sélectionner une valeur après un rappel d'un service Web, car j'en obtenais des données.
Le rafraîchissement du sélecteur était donc la seule chose qui me manquait.
la source
J'ai trouvé qu'en utilisant
attr
vous vous retrouveriez avec plusieurs options sélectionnées lorsque vous ne vouliez pas - la solution est d'utiliserprop
:$("#myDropDown option:text=" + myText +"").prop("selected", "selected");
la source
J'ai eu un problème avec les exemples ci-dessus, et le problème était dû au fait que mes valeurs de zone de sélection sont préremplies avec des chaînes de longueur fixe de 6 caractères, mais le paramètre transmis n'est pas de longueur fixe.
J'ai une fonction rpad qui remplira à droite une chaîne, à la longueur spécifiée et avec le caractère spécifié. Ainsi, après remplissage du paramètre, cela fonctionne.
la source
la source
Cette réponse acceptée ne semble pas correcte, tandis que .val ('newValue') est correct pour la fonction, essayer de récupérer une sélection par son nom ne fonctionne pas pour moi, j'ai dû utiliser l'identifiant et le nom de classe pour obtenir mon élément
la source
Voici une option facile. Définissez simplement votre option de liste, puis définissez son texte comme valeur sélectionnée:
la source
Obtenez les enfants de la boîte de sélection; boucle à travers eux; lorsque vous avez trouvé celui que vous voulez, définissez-le comme l'option sélectionnée; renvoie false pour arrêter la boucle.
la source