web-dev-qa-db-fra.com

jQuery - Comment sélectionner un élément de la liste déroulante par texte?

Comment sélectionnerais-je un élément de la liste déroulante par texte plutôt que par valeur?

Je veux sélectionner un élément déroulant par le texte avec jQuery.

20
nunu

utiliser : contient ()(lien)

$("select option:contains(text)").attr('selected', true);

démo

39
Reigel

Il y a une fonction filter sur jQuery que vous pouvez utiliser pour obtenir des éléments avec quelque chose de plus spécifique

$("select option").filter(function() {
    return $(this).text() == "text_to_select";
});

Cela va retourner toutes les options avec le "text_to_select" dans le texte.

9
BrunoLM

je pense que cela fera l'affaire pour vous ...

$("#selectId").find("option:contains('text')").each(function(){
  if( $(this).text() == 'Text that should be matched' ) {
    $(this).attr("selected","selected");
  }
});
3
Vivek
$("selecter option:contains('" + data[i].ID+ "')").attr('selected', 'selected');
0
Aqib Shehzad

Voici le code que j'utilise (ce n'est pas tout à fait le même que les autres suggestions ici, et fonctionne avec jQuery v1.8.3)

var userToSearchFor = 'mike';   //  Select any options containing this text

$("#ListOfUsers").find("option:contains('" + userToSearchFor +"')").each(function () {
   $(this).attr("selected", "selected");
});

<select id="ListOfUsers" ></select>

J'espère que cela t'aides.

0
Mike Gledhill

J'ai eu un scénario similaire avec des listes déroulantes pour le pays, l'état et la ville. Le pays avait "l'Inde" ainsi que "le territoire britannique de l'océan Indien". Le problème avec :contains() est qu’il tente sur les deux correspondances. J'ai fait quelque chose comme:

$('#country option').each(function(){
    if($(this).text() == 'India'){
        $(this).prop('selected', true).trigger('change');
    }
});
0
Zeeshan