jQuery - setarea selectată valoarea unei selectați control prin intermediul descriere text

Am o selectați control, și într-o variabilă javascript trebuie un șir de text.

Folosind jQuery vreau să setați elementul selectat de selectați control să fie elementul cu textul de descriere trebuie (spre deosebire de valoare, care nu't au).

Știu setarea de valoare este destul de banal. de exemplu

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

Dar eu'm un pic lovit pe face-o prin textul de descriere. Cred că trebuie să existe o cale de a obține valoare din text descriere, dar creierul meu este prea vineri după-amiază-ed pentru a fi capabil să-l lucreze afară.

Comentarii la întrebare (1)
Soluția

Selectați de descriere pentru jQuery v1.6+

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>
  One
  Two
Comentarii (15)

Nu am't testat acest lucru, dar acest lucru ar putea lucra pentru tine.

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

Încercați acest lucru...pentru a selecta opțiunea cu text ator

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

Fac pe această cale (jQuery 1.9.1)

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

Notă: don't uita de a schimba(), am avut pentru a căuta de mult din cauza asta :)

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

va returna valoarea de prima opțiune conține o descriere text. Testat și funcționează.

Comentarii (4)

Pentru a evita toate versiune jQuery complicatii, sincer, am recomandăm să utilizați unul dintre aceste foarte simplu de funcții javascript...


function setSelectByValue(eID,val)
{ //Loop through sequentially//
  var ele=document.getElementById(eID);
  for(var ii=0; ii
Comentarii (3)

Stiu ca e un post vechi, dar nu puteam't obține pentru a selecta de text folosind jQuery 1.10.3 și soluțiile de mai sus. Am ajuns, folosind următorul cod (variație de spoulson's soluție):

      var textToSelect = "Hello World";

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

Sper că vă ajută pe cineva.

Comentarii (0)

Această linie a lucrat:

$("#myDropDown option:contains(myText)").attr('selected', true);
Comentarii (0)
 $("#Test").find("option:contains('two')").each(function(){
     if( $(this).text() == 'two' ) {
        $(this).attr("selected","selected");
     }
 });

Dacă declarația nu o potrivire exactă cu "doi" și "două trei" nu va fi compensată

Comentarii (2)

Cel mai simplu mod cu 1,7+ este:

$("#myDropDown option:text=" + myText +"").attr("selected", "selected"); 

1.9+

$("#myDropDown option:text=" + myText +"").prop("selected", "selected"); 

Testat și funcționează.

Comentarii (2)

aruncati o privire la jquery selectedbox plugin

selectOptions(value[, clear]): 

Selectați opțiuni de valoare, folosind un șir de parametrul $("#myselect2").selectați opțiuni("1");, sau o expresie regulată $("#myselect2").selectați opțiuni(/^val/i);.

Puteți, de asemenea, clar deja selectat opțiuni: $("#myselect2").selectați opțiuni("Valoare 2", true);

Comentarii (0)

Aici este foarte simplu. plz folosi

$("#free").val("y").change();
Comentarii (0)

Doar pe o notă parte. Meu de valoarea selectată nu a fost stabilit. Și te-am căutat peste tot pe net. De fapt, am avut pentru a selecta o valoare, după un apel înapoi de la un serviciu web, pentru că am fost obtinerea de date de la ea.

$("#SelectMonth option[value=" + DataFromWebService + "]").attr('selected', 'selected'); 
$("#SelectMonth").selectmenu('refresh', true);

Deci, de reîmprospătare a selectorului era singurul lucru care îmi lipsea.

Comentarii (1)

Am constatat că prin utilizarea v v-ar termina cu mai multe opțiuni selectate atunci când ai n't vreau să - soluție este de a utiliza prop:

$("#myDropDown opțiune:text=" + ator +"").prop("selectat", "selectat");

Comentarii (0)

Am avut o problema cu exemplele de mai sus, iar problema a fost cauzată de faptul că-mi selectați caseta de valori sunt preumplute cu siruri de caractere de lungime fixă de 6 caractere, dar parametru fiind trecut în era't lungime fixă.

Am o rpad funcție care va dreptul pad un șir de caractere, de lungime specificată, și cu caracterul specificat. Deci, după padding parametrul funcționează.

$('#wsWorkCenter').val(rpad(wsWorkCenter, 6, ' '));

function rpad(pStr, pLen, pPadStr) {
if (pPadStr == '') {pPadStr == ' '};
while (pStr.length < pLen)
    pStr = pStr + pPadStr;
return pStr; 
} 
Comentarii (0)
 $('#theYear').on('change', function () {
 FY = $(this).find('option:selected').text();
 $('#theFolders').each(function () {
     $('option:not(:contains(' + FY + '))', this).hide();
 });
 $('#theFolders').val(0);
});

$('#theYear').on('mousedown', function () {
 $('#theFolders option').show().find('option:contains("Select")', this).attr('selected', 'selected');
});
Comentarii (0)

Heres o opțiune de ușor. Doar seta opțiunea din listă, apoi setați textul selectat ca valoare:

$("#ddlScheduleFrequency option").selected(text("Select One..."));
Comentarii (0)

Acest acceptat răspunsul nu pare corectă, în timp ce .val('newValue') este corect pentru funcționeze, încercarea de a prelua o selectați prin numele său nu funcționează pentru mine, am avut de a utiliza id-ul și classname pentru a obține elementul meu

Comentarii (1)

Ia copiii selectați caseta; bucla prin ele; atunci când ați găsit unul care vă doriți, setați-l ca opțiunea selectată; return false pentru a opri looping.

Comentarii (0)