Получить выделенный текст из выпадающего списка (выбрать поле) с помощью jQuery


2302

Как я могу получить выделенный текст (не выбранное значение) из раскрывающегося списка в JQuery?


12
Только мои два цента: выпадающий "ASP" не является особенным; это просто старый добрый HTML. :-)
ankush981

Можно сослаться на эту статью: javascriptstutorial.com/blog/…
Дилип Кумар Ядав

для ванильного способа JavaScript, см. stackoverflow.com/a/5947/32453
rogerdpack

Просто $ (this) .prop ('selected', true); заменил .att на .prop, он работал для всех браузеров
Шахид Хуссейн Аббаси

Ответы:


3774
$("#yourdropdownid option:selected").text();

207
Я думаю, что это должно быть, $("#yourdropdownid").children("option").filter(":selected").text()поскольку is () возвращает логическое значение того, соответствует ли объект селектору или нет.
Холлис

42
Я второй комментарий о том () возвращает Boolen; в качестве альтернативы используйте следующее небольшое изменение: $ ('# yourdropdownid'). children ("option: selected"). text ();
подводное

25
@ Тест DT3 is("selected").text()возвращаетTypeError: Object false has no method 'text'
ianace

96
$('select').children(':selected')самый быстрый способ: jsperf.com/get-selected-option-text
Симон

3
$ ("# IdSelect"). Children ("option: selected"). Text ()
JD - DC TECH

267

Попробуй это:

$("#myselect :selected").text();

Для раскрывающегося списка ASP.NET вы можете использовать следующий селектор:

$("[id*='MyDropDownId'] :selected")

Версия ASP.NET здесь единственная Jquery, которая работает с asp.net для меня, поэтому я согласен с этим. Этот: ( '$ ("# yourdropdownid option: selected"). Text ();' не работал на странице asp.net с использованием главной страницы.
netfed

5
это не работает, потому что главные страницы asp.net выбрасывают случайные символы перед селектором. Технически это ищет что-то вроде("#ct0001yourdropdownid)
CSharper


1
@CSharper - я думаю, говоря, что ASP.NET выбрасывает случайные символы , вводит в заблуждение. Они вовсе не случайны, они структурны и следуют строгим правилам (основанным на таких вещах, как, например, надели ли вы IDсвой элемент управления, а если нет, то на основании индекса их местонахождения на текущем уровне дерева и т. Д. )
freefaller

Привет, как вы делаете это внутри строки / ячейки таблицы, как узнать, какой из выпадающих из таблицы, особенно в ASP MVC 5
трансформатор

215

Ответы, размещенные здесь, например,

$('#yourdropdownid option:selected').text();

не работает для меня, но это сработало:

$('#yourdropdownid').find('option:selected').text();

Возможно, это более старая версия jQuery.


7
Не ненавидь этот ответ. Использование ключевого слова "найти" помогло мне. Я пришел из совершенно другого контекста.
ROFLwTIME

5
вам вообще не нужна эта опция, поскольку она подразумевается с selected ... просто используя $ ('# yourdropdownid: selected'). text (); будет работать нормально
Dss

jquery-1.10.2.min, этот работал для меня, а не для других.
Кубилай

Популярный ответ работает, но мне он нужен на уже полученной ссылке на избранных, так что это лучший ответ для меня
Грэм

102

Если у вас уже есть выпадающий список в переменной, это то, что мне подходит:

$("option:selected", myVar).text()

Другие ответы на этот вопрос помогли мне, но в конечном итоге ветка форума jQuery выбранная опция $ $ (this + "option: selected"). Attr ("rel") не работает в IE .

Обновление: исправлена ​​ссылка выше


67

Это работает для меня

$("#dropdownid").change(function() {
    alert($(this).find("option:selected").text());
});

Если элемент создан динамически

$(document).on("change", "#dropdownid", function() {
    alert($(this).find("option:selected").text());
});


55

$("#DropDownID").val() даст выбранное значение индекса.


37
Не совсем ответ на вопрос, но был полезен для меня. Вопрос хочет выделенный текст.
Питер

54

Это работает для меня:

$('#yourdropdownid').find('option:selected').text();

Версия jQuery : 1.9.1


3
Это сработало для меня, потому что на changeмероприятии я теперь могу использовать, $(this).find('option:selected').text()чтобы получить текст.
Timo002

$(this).children(':selected').text()также будет работать. @ Timo002
Мистер Мак,

42

Для текста выбранного элемента используйте:

$('select[name="thegivenname"] option:selected').text();

Для значения выбранного элемента используйте:

$('select[name="thegivenname"] option:selected').val();

33

Различные способы

1. $("#myselect option:selected").text();

2. $("#myselect :selected").text();

3. $("#myselect").children(":selected").text();

4. $("#myselect").find(":selected").text();

31
$("#dropdownID").change(function(){
  alert($('option:selected', $(this)).text());
});

это то, что я ожидал $(this) после моего вызова Ajax
Shantaram Tupe

Вы также можете сделать $ ("option: selected", this) .text (), не заключая это в объект JQuery.
Даг Ф

28
var someName = "Test";

$("#<%= ddltest.ClientID %>").each(function () {
    $('option', this).each(function () {
        if ($(this).text().toLowerCase() == someName) {
            $(this).attr('selected', 'selected')
        };
    });
});

Это поможет вам получить правильное направление. Выше код полностью протестирован, если вам нужна дополнительная помощь, дайте мне знать.


28

Использовать этот

const select = document.getElementById("yourSelectId");

const selectedIndex = select.selectedIndex;
const selectedValue = select.value;
const selectedText = select.options[selectedIndex].text;   

Тогда вы получите выбранное значение и текст внутри selectedValueи selectedText.


1
Проголосовал, потому что это единственный ответ, не использующий jQuery.
Джастин Лессард

Я с любовью с ванильным JS. Большое спасибо за это.
Энрике Бермудес

19

Для тех, кто использует списки SharePoint и не хочет использовать длинный сгенерированный идентификатор, это будет работать:

var e = $('select[title="IntenalFieldName"] option:selected').text();

17
 $("#selectID option:selected").text();

Вместо этого #selectIDвы можете использовать любой селектор jQuery, как.selectClass используя класс.

Как указано в документации здесь .

Селектор: selected работает для элементов <option>. Это не работает для флажков или радиовходов; использовать :checkedдля них.

.text () Согласно документации здесь .

Получить объединенное текстовое содержимое каждого элемента в наборе соответствующих элементов, включая их потомков.

Таким образом, вы можете взять текст из любого элемента HTML, используя .text()метод.

Обратитесь к документации для более глубокого объяснения.



13

Для получения выбранного значения используйте

$('#dropDownId').val();

и для получения текста выбранного элемента используйте эту строку:

$("#dropDownId option:selected").text();


11

Выберите текст и выбранное значение в раскрывающемся списке / выберите событие изменения в jQuery

$("#yourdropdownid").change(function() {
    console.log($("option:selected", this).text()); //text
    console.log($(this).val()); //value
})

10

Просто попробуйте следующий код.

var text= $('#yourslectbox').find(":selected").text();

возвращает текст выбранной опции.




8

у меня сработало следующее:

$.trim($('#dropdownId option:selected').html())

1
Примечание: не используйте это для множественного выбора. Он захватывает только первое выбранное значение.
максимум


7

В случае родного брата

<a class="uibutton confirm addClient" href="javascript:void(0);">ADD Client</a>
<input type="text" placeholder="Enter client name" style="margin: 5px;float: right" class="clientsearch large" />
<select class="mychzn-select clientList">
  <option value="">Select Client name....</option>
  <option value="1">abc</option>
</select>


 /*jQuery*/
 $(this).siblings('select').children(':selected').text()

7

$(function () {
  alert('.val() = ' + $('#selectnumber').val() + '  AND  html() = ' + $('#selectnumber option:selected').html() + '  AND .text() = ' + $('#selectnumber option:selected').text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <title></title>

  </head>
  <body>
    <form id="form1" runat="server">
      <div>
        <select id="selectnumber">
          <option value="1">one</option>
          <option value="2">two</option>
          <option value="3">three</option>
          <option value="4">four</option>
        </select>

      </div>
    </form>
  </body>
</html>

Нажмите, чтобы увидеть OutPut Screen


Привет, как вы делаете это внутри строки / ячейки таблицы , как вы узнаете, какой из выпадающих из таблицы? Я пытаюсь сделать ajax-вызов для извлечения и заполнения значений, я могу сделать это снаружи на странице, но не внутри строки таблицы ... не могли бы вы добавить некоторую помощь, пожалуйста
трансформатор


4

Если вы хотите получить результат в виде списка, используйте:

x=[];
$("#list_id").children(':selected').each(function(){x.push($(this).text());})

2
$("#dropdown").find(":selected").text();


$("#dropdown :selected").text();

$("#dropdown option:selected").text();

$("#dropdown").children(":selected").text();

действительно объяснить , почему это работало бы
jwenting

2

Этот код работал для меня.

$("#yourdropdownid").children("option").filter(":selected").text();
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.