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

2181

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

  • 10
    Просто мои два цента: выпадающий "ASP" не является особенным; это просто старый добрый HTML. :-)
  • 0
    Можно сослаться на эту статью: javascriptstutorial.com/blog/…
Показать ещё 2 комментария
Теги:
drop-down-menu
jquery-selectors

32 ответа

3288
Лучший ответ
$("#yourdropdownid option:selected").text();
  • 193
    Я думаю, что это должно быть $("#yourdropdownid").children("option").filter(":selected").text() поскольку is () возвращает логическое значение того, соответствует ли объект селектору или нет.
  • 41
    Я второй комментарий о том () возвращает Boolen; в качестве альтернативы используйте следующее небольшое изменение: $ ('# yourdropdownid'). children ("option: selected"). text ();
Показать ещё 10 комментариев
244

Попробуйте следующее:

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

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

$("[id*='MyDropDownId'] :selected")
  • 0
    Версия ASP.NET здесь является единственной Jquery, которая работает с asp.net для меня, поэтому я согласен с этим. Этот: ( '$ ("# yourdropdownid option: selected"). Text ();' не работал на странице asp.net, использующей главную страницу).
  • 5
    это не работает, потому что главные страницы asp.net выбрасывают случайные символы перед селектором. Технически он ищет что-то вроде ("#ct0001yourdropdownid)
Показать ещё 4 комментария
190

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

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

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

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

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

  • 7
    Не ненавидь этот ответ. Использование ключевого слова "найти" помогло мне. Я пришел из совершенно другого контекста.
  • 5
    вам вообще не нужна эта опция, поскольку она подразумевается с selected ... просто используя $ ('# yourdropdownid: selected'). text (); будет работать нормально
Показать ещё 2 комментария
99

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

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

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

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

61
$("option:selected", $("#TipoRecorde")).text()
53

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

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

jQuery версия: 1.9.1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4. $("#myselect").find(":selected").text();
29
$("#dropdownID").change(function(){
  alert($('option:selected', $(this)).text());
});
  • 0
    это то, что я ожидал с $(this) после моего вызова ajax
  • 0
    Вы также можете сделать $ ("option: selected", this) .text (), не заключая это в объект JQuery.
26
var someName = "Test";

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

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

18

Пожалуйста, используйте этот

var listbox = document.getElementById("yourdropdownid");
var selIndex = listbox.selectedIndex;
var selValue = listbox.options[selIndex].value;
var selText = listbox.options[selIndex].text;   

Затем, пожалуйста, сообщите "selValue" и "selText". Вы получаете свое выделенное выпадающее значение и текст

18

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

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

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

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

Выбранный селектор работает для элементов < option. Он не работает для флажков или радиовходов; используйте :checked для них.

.text() В соответствии с документацией здесь.

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

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

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

14
$("select[id=yourDropdownid] option:selected").text()

Это прекрасно работает

12

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

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

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

$("#dropDownId option:selected").text();
12
$('#id').find('option:selected').text();
10

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

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

Использование:

('#yourdropdownid').find(':selected').text();
7
var e = document.getElementById("dropDownId");
var div = e.options[e.selectedIndex].text;
  • 0
    Я попытался войти в div в var div = e.options[e.selectedIndex].text; , и он отображает только первый элемент опции. Как получить каждый элемент для отображения?
  • 0
    @ Chris22 см. По этой ссылке stackoverflow.com/questions/3923858/…
7

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

$.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()
6

Пытаться:

$var = jQuery("#dropdownid option:selected").val();
   alert ($var);

Или, чтобы получить текст опции, используйте text():

$var = jQuery("#dropdownid option:selected").text();
   alert ($var);

Больше информации:

6

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

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

Я использую jQuery 1.10.2

5

$(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>

Изображение 2059

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

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

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

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

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

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

1

Я лично предпочитаю это

$(this).find("option:selected").text();

Если у вас есть optgroup в вашем поле выбора, вышеуказанный код будет работать нормально, this поле выбора.

0

Просто $ (this).prop('selected', true);

заменил .att на .prop это работало для всех браузеров

0
$("#dropdownid option:selected").text();

если вы используете asp.net и пишите

<Asp:dropdownlist id="ddl" runat="Server" />

то вы должны использовать

$('#<%=ddl.Clientid%> option:selected').text();
0

Для мультивыбор:

$("#yourdropdownid :selected").map(function(i, v) { return $.trim($(v).text()); }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню