Jeg har en select-kontrol, og i en javascript-variabel har jeg en tekststreng.
Ved hjælp af jQuery ønsker jeg at indstille det valgte element i select-kontrollen til at være det element med den tekstbeskrivelse, jeg har (i modsætning til værdien, som jeg ikke har).
Jeg ved, at det er ret trivielt at indstille det efter værdi. f.eks.
$("#my-select").val(myVal);
Men I'm en smule stumped på at gøre det via tekstbeskrivelsen. Der må vel være en måde at få værdien ud af tekstbeskrivelsen på, men min hjerne er for fredag eftermiddags-ed til at kunne regne det ud.
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>
Bemærk, at denne fremgangsmåde fungerer i versioner over 1.6, men under 1.9, men at den er blevet forældet siden 1.6. Den virker ikke i jQuery 1.9+.
val()
bør håndtere begge tilfælde.
$('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>