Pregunta jQuery - establecer el valor seleccionado de un control de selección a través de su descripción de texto


Tengo un control de selección, y en una variable de JavaScript tengo una cadena de texto.

Usando jQuery, quiero configurar el elemento seleccionado del control de selección para que sea el elemento con la descripción del texto que tengo (a diferencia del valor, que no tengo).

Sé que configurarlo por valor es bastante trivial. p.ej.

$("#my-select").val(myVal);

Pero estoy un poco perplejo al hacerlo a través de la descripción del texto. Supongo que debe haber una forma de sacarle valor a la descripción del texto, pero mi cerebro está demasiado tarde el viernes para poder resolverlo.


508
2018-01-30 16:12


origen


Respuestas:


Dado este HTML:

<select>
    <option value="0">One</option>
    <option value="1">Two</option>
</select>

Seleccione por descripción para jQuery v1.6 +:

var text1 = 'Two';
$("select option").filter(function() {
    //may want to use $.trim in here
    return $(this).text() == text1; 
}).prop('selected', true);

Seleccione por descripción para las versiones de jQuery inferiores a 1.6 y superiores o iguales a 1.4: https://stackoverflow.com/a/3644500/31532

var text1 = 'Two';
$("select option").filter(function() {
    //may want to use $.trim in here
    return $(this).text() == text1; 
}).attr('selected', true);

Tenga en cuenta que si bien este enfoque funcionará en las versiones que están por encima de 1.6 pero por debajo de 1.9, se ha desaprobado desde 1.6. Eso no trabajará en jQuery 1.9+.

Seleccione por descripción para las versiones anteriores:

val() debe manejar ambos casos. ¿No lo estás viendo?

P.ej:

$('select').val('1'); // selects "Two"
$('select').val('Two'); // also selects "Two"

734
2018-01-30 16:25



No he probado esto, pero esto podría funcionar para ti.

$("select#my-select option")
   .each(function() { this.selected = (this.text == myVal); });

136
2018-01-30 16:22



Intenta esto ... para seleccionar la opción con el texto myText

$("#my-Select option[text=" + myText +"]").attr("selected","selected");

88
2018-01-30 16:51



Lo hago de esta manera (jQuery 1.9.1)

$("#my-select").val("Dutch").change();

Nota: no olvides el cambio (), tuve que buscar mucho por eso :)


31
2017-09-15 15:17



$("#myselect option:contains('YourTextHere')").val();

devolverá el valor de la primera opción que contiene su descripción de texto. Probó esto y funciona.


19
2018-01-30 16:36



Para evitar todas las complicaciones de la versión de jQuery, honestamente recomiendo usar una de estas funciones de JavaScript realmente simples ...

function setSelectByValue(eID,val)
{ //Loop through sequentially//
  var ele=document.getElementById(eID);
  for(var ii=0; ii<ele.length; ii++)
    if(ele.options[ii].value==val) { //Found!
      ele.options[ii].selected=true;
      return true;
    }
  return false;
}

function setSelectByText(eID,text)
{ //Loop through sequentially//
  var ele=document.getElementById(eID);
  for(var ii=0; ii<ele.length; ii++)
    if(ele.options[ii].text==text) { //Found!
      ele.options[ii].selected=true;
      return true;
    }
  return false;
}

15
2018-05-08 15:49



Sé que esta es una publicación anterior, pero no pude seleccionarla por texto usando jQuery 1.10.3 y las soluciones anteriores. Terminé usando el siguiente código (variación de la solución de Spoulson):

      var textToSelect = "Hello World";

      $("#myDropDown option").each(function (a, b) {
            if ($(this).html() == textToSelect ) $(this).attr("selected", "selected");
        });

Espero que ayude a alguien.


9
2017-10-02 13:54



Esta línea funcionó:

$("#myDropDown option:contains(myText)").attr('selected', true);

9
2017-12-12 19:42