Tengo un control select, y en una variable javascript tengo una cadena de texto.
Usando jQuery quiero que el elemento seleccionado del control select sea el elemento con la descripción de texto que tengo (en lugar del valor, que no tengo).
Sé que establecerlo por valor es bastante trivial, por ejemplo
$("#my-select").val(myVal);
Pero estoy un poco perplejo en hacerlo a través de la descripción de texto. Supongo que debe haber una manera de sacar el valor de la descripción de texto, pero mi cerebro es demasiado viernes por la tarde-editado para ser capaz de resolverlo.
begin snippet: js hide: false console: true babel: false -->
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>
...fin del fragmento..;
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>
...fin del fragmento..;
Tenga en cuenta que aunque este método funcionará en versiones superiores a la 1.6 pero inferiores a la 1.9, ha quedado obsoleto desde la 1.6. No funcionará]2* en jQuery 1.9+.
val()
debería manejar ambos casos.
begin snippet: js hide: false console: true babel: false -->
$('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>
...fin del fragmento..;