J'ai un contrôle de sélection, et dans une variable javascript, j'ai une chaîne de texte.
À l'aide de jQuery, je veux que l'élément sélectionné du contrôle de sélection soit l'élément contenant la description textuelle que j'ai (par opposition à la valeur, que je n'ai pas).
Je sais que la définition de la valeur est assez simple, par exemple
$("#my-select").val(myVal);
Mais j'ai un peu de mal à le faire via la description textuelle. Je suppose qu'il doit y avoir un moyen d'extraire la valeur de la description textuelle, mais mon cerveau est trop fatigué pour y parvenir.
var text1 = 'Two';
$("select option").filter(function() {
//may want to use $.trim in here
return $(this).text() == text1;
}).prop('selected', true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
var text1 = 'Two';
$("select option").filter(function() {
//may want to use $.trim in here
return $(this).text() == text1;
}).attr('selected', true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
Notez que cette approche fonctionne dans les versions supérieures à la 1.6 mais inférieures à la 1.9, mais qu'elle est dépréciée depuis la 1.6. Elle [ne fonctionnera pas][2] dans jQuery 1.9+.
val()
devrait gérer les deux cas.
$('select').val('1'); // selects "Two"
$('select').val('Two'); // also selects "Two"
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<select>
<option value="0">One</option>
<option value="1">Two</option>
</select>
[2] : https://stackoverflow.com/questions/14366220/optionselected-not-working-jquery-1-9