Question jQuery - Définition de la valeur sélectionnée d'un contrôle select via sa description textuelle


J'ai un contrôle de sélection, et dans une variable javascript j'ai une chaîne de texte.

En utilisant jQuery, je veux définir l'élément sélectionné du contrôle de sélection comme l'élément avec la description de texte que j'ai (par opposition à la valeur, que je n'ai pas).

Je sais que le définir par valeur est assez trivial. par exemple.

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

Mais je suis un peu déconcerté de le faire via la description du texte. Je suppose qu'il doit y avoir un moyen d'extraire la valeur de la description textuelle, mais mon cerveau est trop vendredi après-midi pour être en mesure de le résoudre.


508
2018-01-30 16:12


origine


Réponses:


Compte tenu de ce code HTML:

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

Sélectionnez par description pour jQuery v1.6 +:

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

Sélectionner par description pour les versions de jQuery inférieures à 1.6 et supérieures ou égales à 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);

Notez que bien que cette approche fonctionne dans les versions supérieures à 1,6 mais inférieures à 1,9, elle est obsolète depuis la version 1.6. Il ne fonctionnera pas dans jQuery 1.9+.

Sélectionnez par description pour les versions précédentes:

val() devrait gérer les deux cas. Vous ne le voyez pas?

Par exemple:

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

734
2018-01-30 16:25



Je n'ai pas testé cela, mais cela pourrait fonctionner pour vous.

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

136
2018-01-30 16:22



Essayez ceci ... pour sélectionner l'option avec le texte myText

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

88
2018-01-30 16:51



Je le fais de cette façon (jQuery 1.9.1)

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

Note: n'oubliez pas le changement (), j'ai dû chercher longtemps à cause de ça :)


31
2017-09-15 15:17



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

retournera la valeur de la première option contenant votre description textuelle. Testé cela et fonctionne.


19
2018-01-30 16:36



Pour éviter toutes les complications de la version de jQuery, je recommande honnêtement d'utiliser l'une de ces fonctions javascript vraiment 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



Je sais que c'est un ancien article, mais je n'ai pas pu le faire en sélectionnant le texte en utilisant jQuery 1.10.3 et les solutions ci-dessus. J'ai fini par utiliser le code suivant (variante de la solution de spoulson):

      var textToSelect = "Hello World";

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

J'espère que ça aide quelqu'un.


9
2017-10-02 13:54



Cette ligne a travaillé:

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

9
2017-12-12 19:42