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ă.
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>
Rețineți că în timp ce această abordare va funcționa în versiuni care sunt mai sus de 1.6, dar mai puțin de 1,9, a fost dezaprobată de 1.6. L nu va funcționa în jQuery 1.9+.
val()
ar trebui să se ocupe ambele cazuri.
$('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>
Încercați acest lucru...pentru a selecta opțiunea cu text ator
$("#my-Select option[text=" + myText +"]").attr("selected","selected");
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 :)
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<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;
}
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.
Această linie a lucrat:
$("#myDropDown option:contains(myText)").attr('selected', true);
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ă.
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);
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.
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;
}
$('#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');
});
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..."));
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