Jeg har en select-kontroll, og i en javascript-variabel har jeg en tekststreng.
Ved hjelp av jQuery vil jeg sette det valgte elementet i valgkontrollen til å være elementet med tekstbeskrivelsen jeg har (i motsetning til verdien, som jeg ikke har).
Jeg vet at det er ganske trivielt å sette det etter verdi. f.eks.
$("#my-select").val(myVal);
Men jeg er litt stumpet på å gjøre det via tekstbeskrivelsen. Jeg antar at det må være en måte å få verdien ut fra tekstbeskrivelsen, men hjernen min er for fredag ettermiddag-ed til å kunne finne ut av det.
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>
Merk at selv om denne tilnærmingen vil fungere i versjoner som er over 1.6, men mindre enn 1.9, har den blitt utdatert siden 1.6. Det vil ikke fungere i jQuery 1.9+.
val()
skal håndtere begge tilfeller.
$('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>