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.
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.
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");
}
});
$("selecter option:contains('" + data[i].ID+ "')").attr('selected', 'selected');
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.
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');
}
});