jQuery - установка выбранного значения элемента управления select через его текстовое описание - PullRequest
521 голосов
/ 30 января 2009

У меня есть элемент управления select, а в переменной javascript есть текстовая строка.

Используя jQuery, я хочу установить выбранный элемент элемента управления select как элемент с текстовым описанием, которое у меня есть (в отличие от значения, которого у меня нет).

Я знаю, что установить его по значению довольно тривиально. например,

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

Но я немного озадачен делать это через текстовое описание. Я предполагаю, что должен быть способ получить значение из текстового описания, но мой мозг слишком полдень в пятницу, чтобы иметь возможность это понять.

Ответы [ 19 ]

4 голосов
/ 30 января 2009

взгляните на плагин jquery selectedbox

selectOptions(value[, clear]): 

Выберите параметры по значению, используя строку в качестве параметра $("#myselect2").selectOptions("Value 1"); или регулярное выражение $("#myselect2").selectOptions(/^val/i);.

Вы также можете очистить уже выбранные опции: $("#myselect2").selectOptions("Value 2", true);

3 голосов
/ 07 сентября 2017

Вот очень простой способ. Пожалуйста, используйте его

$("#free").val("y").change();
3 голосов
/ 17 июня 2013

Я обнаружил, что с помощью attr вы получите несколько вариантов, выбранных, когда вы не захотите - решение заключается в использовании prop:

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

3 голосов
/ 01 июня 2013

Просто на заметку. Мое выбранное значение не было установлено. И у меня был поиск по всей сети. На самом деле мне пришлось выбрать значение после обратного вызова из веб-службы, потому что я получал данные из него.

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

Так что мне не хватало обновления селектора.

1 голос
/ 16 сентября 2014
 $('#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');
});
1 голос
/ 18 января 2012

У меня была проблема с примерами, приведенными выше, и проблема была вызвана тем фактом, что значения моего поля выбора предварительно заполнены строками фиксированной длины из 6 символов, но передаваемый параметр не был фиксированной длины.

У меня есть функция rpad, которая вставит строку справа, до указанной длины и с указанным символом. Итак, после заполнения параметра это работает.

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


function rpad(pStr, pLen, pPadStr) {
if (pPadStr == '') {pPadStr == ' '};
while (pStr.length < pLen)
    pStr = pStr + pPadStr;
return pStr; 
} 
0 голосов
/ 22 апреля 2015

Этот принятый ответ не кажется правильным, в то время как .val ('newValue') является правильным для функции, попытка получить выборку по его имени не работает для меня, мне пришлось использовать идентификатор и имя класса, чтобы получить мой элемент

0 голосов
/ 16 января 2015

Вот простой вариант. Просто установите опцию списка, а затем установите его текст как выбранное значение:

$("#ddlScheduleFrequency option").selected(text("Select One..."));
0 голосов
/ 30 января 2009

Получить детей из поля выбора; цикл через них; когда вы нашли тот, который вы хотите, установите его в качестве выбранной опции; вернуть false, чтобы остановить цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...