選択コントロールがあり、javascriptの変数にテキスト文字列が入っています。
jQueryを使用して、selectコントロールの選択された要素を、私が持っているテキスト記述を持つアイテムに設定したいと思います(私が持っていない値とは異なります)。
値で設定することは非常に簡単なことだと知っています。
$("#my-select").val(myVal);
しかし、それをテキスト記述で行うことについては、少し困っています。テキストの説明から値を取り出す方法があるはずなのですが、私の頭は金曜日の午後になっても解決できません。
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>
なお、この方法は1.6以上1.9未満のバージョンでは動作しますが、1.6以降は非推奨となっています。jQuery 1.9+では[動作しません][2]。
val()はどちらの場合でも対応できるはずです。
$('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