У меня есть элемент управления select, и в переменной javascript у меня есть текстовая строка.
Используя jQuery, я хочу установить выбранный элемент элемента управления select как элемент с текстовым описанием, которое у меня есть (в отличие от значения, которого у меня нет).
Я знаю, что установить его по значению довольно тривиально. например
$("#my-select").val(myVal);
Но я немного озадачен делать это через текстовое описание. Я предполагаю, что должен быть способ получить значение из текстового описания, но мой мозг слишком полдень в пятницу, чтобы быть в состоянии понять это.
javascript
jquery
DanSingerman
источник
источник
Ответы:
Выбрать по описанию для jQuery v1.6 +
Версии jQuery ниже 1.6 и выше или равные 1.4
Обратите внимание, что хотя этот подход будет работать в версиях выше 1.6, но ниже 1.9, он не рекомендуется с 1.6. Это не будет работать в jQuery 1.9+.
Предыдущие версии
val()
должен обрабатывать оба случая.источник
value
если атрибут был указан, и выбирать только по тексту, еслиvalue
атрибут отсутствует. Таким образом, в этом примере$('select').val('Two')
будет выбран второй вариант в 1.3.x, но ничего не будет сделано в 1.4.x.Я не проверял это, но это может сработать для вас.
источник
Попробуйте это ..., чтобы выбрать вариант с текстом myText
источник
$("#my-Select option[text=" + myText +"]").get(0).selected = true;
время от времени переходить на классический стиль: (....prop
вместо.attr
; причина изменения в том, что в 1.9 jQuery отключил старые хаки, которые позволяют вам использовать.attr
для изменения некоторых свойств DOM, а также атрибутов HTML. (Google,javascript dom properties vs attributes
если вы не знаете различия.).prop('selected', true)
вместо.attr('selected', 'selected')
совместимости с jQuery 1.9+.Я делаю это таким образом (JQuery 1.9.1)
Примечание: не забудьте изменить (), мне пришлось долго искать из-за этого :)
источник
вернет значение первой опции, содержащей ваше текстовое описание. Проверено это и работает.
источник
Чтобы избежать всех сложностей в версии jQuery, я искренне рекомендую использовать одну из этих действительно простых функций javascript ...
источник
Я знаю, что это старый пост, но я не смог его выбрать по тексту, используя jQuery 1.10.3 и приведенные выше решения. В итоге я использовал следующий код (вариант решения Спулсона):
Надеюсь, это кому-нибудь поможет.
источник
Эта строка работает:
источник
Оператор if делает точное совпадение с «два» и «два три» не будут сопоставлены
источник
Самый простой способ с 1.7+ это:
1.9+
Проверено и работает.
источник
.prop
версии 1.6, вы должны использовать для изменения свойств DOM, а не.attr
(что касается атрибутов HTML / DOM). См. Stackoverflow.com/q/5874652/1709587Здесь очень простой способ. Пожалуйста, используйте его
источник
взгляните на плагин jquery selectedbox
Выберите параметры по значению, используя строку в качестве параметра
$("#myselect2").selectOptions("Value 1");
или регулярное выражение$("#myselect2").selectOptions(/^val/i);
.Вы также можете очистить уже выбранные опции:
$("#myselect2").selectOptions("Value 2", true);
источник
Просто на заметку. Мое выбранное значение не было установлено. И у меня был поиск по всей сети. На самом деле мне пришлось выбрать значение после обратного звонка из веб-службы, потому что я получал данные из него.
Таким образом, обновление селектора было единственным, что мне не хватало.
источник
Я обнаружил, что при использовании
attr
вы в конечном итоге выберете несколько вариантов, когда вы не захотите - решение заключается в использованииprop
:$("#myDropDown option:text=" + myText +"").prop("selected", "selected");
источник
У меня была проблема с примерами, приведенными выше, и проблема была вызвана тем фактом, что значения моего поля выбора предварительно заполнены строками фиксированной длины из 6 символов, но передаваемый параметр не был фиксированной длины.
У меня есть функция rpad, которая будет дополнять строку справа, до указанной длины и с указанным символом. Итак, после заполнения параметра это работает.
источник
источник
Этот принятый ответ не кажется правильным, в то время как .val ('newValue') является правильным для функции, попытка получить выборку по его имени не работает для меня, мне пришлось использовать id и имя класса, чтобы получить мой элемент
источник
Вот легкий вариант. Просто установите опцию списка, а затем установите его текст в качестве выбранного значения:
источник
Получите детей из поля выбора; цикл через них; когда вы нашли тот, который вы хотите, установите его в качестве выбранной опции; вернуть false, чтобы остановить цикл.
источник