Je dois vérifier si un <select>
a une option dont le texte est égal à une valeur spécifique.
Par exemple, s'il y a un <option value="123">abc</option>
, je chercherais "abc".
Y at-il un sélecteur pour faire cela?
Je cherche quelque chose de similaire à $('#select option[value="123"]');
mais pour le texte.
Cela pourrait aider:
$('#test').find('option[text="B"]').val();
Cela vous donnerait l'option avec le texte B
et non ceux qui ont un texte contenant B
. J'espère que cela t'aides
Pour les versions récentes de jQuery, ce qui précède ne fonctionne pas. Comme commenté par Quandary ci-dessous, voici ce qui fonctionne pour jQuery 1.9.1:
$('#test option').filter(function () { return $(this).html() == "B"; }).val();
Vous pouvez utiliser le sélecteur :contains()
pour sélectionner des éléments contenant du texte spécifique.
Par exemple:
$('#mySelect option:contains(abc)')
Pour vérifier si un élément <select>
donné a une telle option, utilisez la méthode .has()
:
if (mySelect.has('option:contains(abc)').length)
Pour trouver tous les <select>
s contenant une telle option, utilisez le sélecteur :has()
:
$('select:has(option:contains(abc))')
Aucune des suggestions précédentes n'a fonctionné pour moi dans jQuery 1.7.2 car j'essaie de définir l'index sélectionné de la liste en fonction de la valeur d'une zone de texte et certaines valeurs de texte sont contenues dans plusieurs options. J'ai fini par utiliser ce qui suit:
$('#mySelect option:contains(' + value + ')').each(function(){
if ($(this).text() == value) {
$(this).attr('selected', 'selected');
return false;
}
return true;
});
J'ai rencontré le même problème ci-dessous est le code de travail:
$("#test option").filter(function() {
return $(this).text() =='Ford';
}).prop("selected", true);
Cela a fonctionné pour moi: $("#test").find("option:contains('abc')");
C'est la meilleure méthode pour sélectionner du texte dans la liste déroulante.
$("#dropdownid option:contains(your selected text)").attr('selected', true);
J'ai essayé quelques-unes de ces choses jusqu'à ce que je réussisse à utiliser Firefox et IE. C'est ce que je suis venu avec.
$("#my-Select").val($("#my-Select" + " option").filter(function() { return this.text == myText }).val());
une autre façon de l'écrire dans une fasion plus lisible:
var valofText = $("#my-Select" + " option").filter(function() {
return this.text == myText
}).val();
$(ElementID).val(valofText);
Pseudocode:
$("#my-Select").val( getValOfText( myText ) );
Utiliser suivant
$('#select option:contains(ABC)').val();
Pour jquery la version 1.10.2 ci-dessous a fonctionné pour moi
var selectedText="YourMatchText";
$('#YourDropdownId option').map(function () {
if ($(this).text() == selectedText) return this;
}).attr('selected', 'selected');
});
Cela fonctionnera dans jQuery 1.6 (notez le signe deux-points avant le crochet d’ouverture), mais échoue avec les versions les plus récentes (1.10 à l’époque).
$('#mySelect option:[text=abc]")
Cela fonctionne pour moi:
var result = $('#SubjectID option')
.filter(function ()
{ return $(this).html() == "English"; }).val();
La variable result
renverra l'index de la valeur de texte correspondante. Maintenant, je vais juste le configurer en utilisant son index:
$('#SubjectID').val(result);
Ce travail pour moi
$('#mySelect option:contains(' + value + ')').attr('selected', 'selected');