JQuery Получить выбранный вариант из раскрывающегося списка

Обычно я использую $("#id").val() для возврата значения выбранного параметра, но на этот раз он не работает. Выбранный тег имеет идентификатор aioConceptName

html-код

<label>Name</label>
<input type="text" name="name" />
<select id="aioConceptName">
    <option>choose io</option>
    <option>roma</option>
    <option>totti</option>
</select>

Ответ 1

В раскрывающемся списке вы, вероятно, хотите что-то вроде этого:

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

Причина val() не делает этого, потому что нажатие опции не изменяет значение выпадающего списка - оно просто добавляет свойство :selected к выбранному параметру, который является дочерним элементом выпадающего списка.

Ответ 2

Задайте значения для каждой из опций

<select id="aioConceptName">
    <option value="0">choose io</option>
    <option value="1">roma</option>
    <option value="2">totti</option>
</select>

$('#aioConceptName').val() не работает, потому что .val() возвращает атрибут value. Чтобы он работал правильно, атрибуты value должны быть установлены на каждом <option>.

Теперь вы можете вызвать $('#aioConceptName').val() вместо всего этого :selected voodoo, предлагаемого другими.

Ответ 3

Я наткнулся на этот вопрос и разработал более краткий вариант ответа Эллиота Бонневиля:

var conceptName = $('#aioConceptName :selected').text();

или в целом:

$('#id :pseudoclass')

Это экономит вам дополнительный вызов jQuery, выбирает все за один снимок и становится более понятным (мое мнение).

Ответ 4

Попробуйте это для значения...

$("select#id_of_select_element option").filter(":selected").val();

или это для текста...

$("select#id_of_select_element option").filter(":selected").text();

Ответ 5

Если вы находитесь в контексте событий, в jQuery вы можете получить выбранный элемент элемента, используя:
$(this).find('option:selected') следующим образом:

$('dropdown_selector').change(function() {
    //Use $option (with the "$") to see that the variable is a jQuery object
    var $option = $(this).find('option:selected');
    //Added with the EDIT
    var value = $option.val();//to get content of "value" attrib
    var text = $option.text();//to get <option>Text</option> content
});

Edit

Как упоминалось PossessWithin, мой ответ просто ответит на вопрос: как выбрать выбранный вариант.

Затем, чтобы получить значение параметра, используйте option.val().

Ответ 7

$('#aioConceptName option:selected').val();

Ответ 8

<select id="form-s" multiple="multiple">
    <option selected>city1</option>
    <option selected value="c2">city2</option>
    <option value="c3">city3</option>
</select>   
<select id="aioConceptName">
    <option value="s1" selected >choose io</option>
    <option value="s2">roma </option>
    <option value="s3">totti</option>
</select>
<select id="test">
    <option value="s4">paloma</option>
    <option value="s5" selected >foo</option>
    <option value="s6">bar</option>
</select>
<script>
$('select').change(function() {
    var a=$(':selected').text(); // "city1city2choose iofoo"
    var b=$(':selected').val();  // "city1" - selects just first query !
    //but..
    var c=$(':selected').map(function(){ // ["city1","city2","choose io","foo"]
        return $(this).text();
    }); 
    var d=$(':selected').map(function(){ // ["city1","c2","s1","s5"]
        return $(this).val();
    });
    console.log(a,b,c,d);
});
</script>

Ответ 9

Чтение значения (а не текста) для выбора:

var status = $("#Status").val();
var status = $("#Status")[0].value;
var status = $('#Status option:selected').val();

Как отключить выбор? в обоих вариантах значение можно изменить, используя:

А

Пользователь не может взаимодействовать с выпадающим списком. И он не знает, какие могут быть другие варианты.

$('#Status').prop('disabled', true);

В

Пользователь может видеть параметры в раскрывающемся списке, но все они отключены:

$('#Status option').attr('disabled', true);

В этом случае $("#Status").val() будет работать только для версий jQuery меньше 1.9.0. Все остальные варианты будут работать.

Как обновить отключенный выбор?

Из кода позади вы можете обновить значение в своем выборе. Он отключается только для пользователей:

$("#Status").val(2);

В некоторых случаях вам может потребоваться запуск событий:

$("#Status").val(2).change();

Ответ 10

Используя jQuery, просто добавьте событие change и получите выбранное значение или текст внутри этого обработчика.

Если вам нужен выделенный текст, используйте этот код:

$("#aioConceptName").change(function () {
    alert($("#aioConceptName :selected").text())
});

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

$("#aioConceptName").change(function () {
    alert($("#aioConceptName :selected").attr('value'))
});

Ответ 11

Используйте функцию jQuery.val() для отдельных элементов:

Метод .val() в основном используется для получения значений элементов формы таких как ввод, выбор и текстовое поле. В случае выбранных элементов это возвращает null, когда не выбран ни один параметр, и массив, содержащий значение каждого выбранного параметра, когда есть хотя бы один, и это возможно выбрать больше, потому что присутствует атрибут multiple.

$(function() {
  $("#aioConceptName").on("change", function() {
    $("#debug").text($("#aioConceptName").val());
  }).trigger("change");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<select id="aioConceptName">
  <option>choose io</option>
  <option>roma</option>
  <option>totti</option>
</select>
<div id="debug"></div>

Ответ 12

Вы должны использовать этот синтаксис:

var value = $('#Id :selected').val();

Так что попробуйте этот код:

var values = $('#aioConceptName :selected').val();

Вы можете проверить в Fiddle: http://jsfiddle.net/PJT6r/9/

см об этом ответе в этом посте

Ответ 13

Для тех, кто узнал, что лучший ответ не работает.

Попробуйте использовать:

  $( "#aioConceptName option:selected" ).attr("value");

Работает для меня в последних проектах, поэтому стоит посмотреть на него.

Ответ 14

Только это должно работать:

var conceptName = $('#aioConceptName').val();

Ответ 15

Вы можете попробовать отладить это так:

console.log($('#aioConceptName option:selected').val())

Ответ 16

Если вы хотите захватить атрибут 'value' вместо текста node, это будет работать для вас:

var conceptName = $('#aioConceptName').find(":selected").attr('value');

Ответ 18

попробуйте этот

$(document).ready(function() {

    $("#name option").filter(function() {
        return $(this).val() == $("#firstname").val();
    }).attr('selected', true);

    $("#name").live("change", function() {

        $("#firstname").val($(this).find("option:selected").attr("value"));
    });
});


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<select id="name" name="name"> 
<option value="">Please select...</option> 
<option value="Elvis">Elvis</option> 
<option value="Frank">Frank</option> 
<option value="Jim">Jim</option> 
</select>

<input type="text" id="firstname" name="firstname" value="Elvis" readonly="readonly">

Ответ 19

Прямо вперед и довольно легко:

Ваш выпадающий

<select id="aioConceptName">
    <option>choose io</option>
    <option>roma</option>
    <option>totti</option>
</select>

Код Jquery для получения выбранного значения

$('#aioConceptName').change(function() {
    var $option = $(this).find('option:selected');

    //Added with the EDIT
    var value = $option.val(); //returns the value of the selected option.
    var text = $option.text(); //returns the text of the selected option.
});

Ответ 20

Вы можете использовать $("#drpList").val();

Ответ 21

Обычно вам нужно не только получить выбранное значение, но и выполнить какое-либо действие. Так почему бы не избежать всей магии jQuery и просто передать выбранное значение в качестве аргумента для вызова действия?

<select onchange="your_action(this.value)">
   <option value='*'>All</option>
   <option ... />
</select>

Ответ 22

Вы можете выбрать, используя точно выбранную опцию: ниже даст innerText

$("select#aioConceptName > option:selected").text()

Хотя ниже даст вам ценность.

$("select#aioConceptName > option:selected").val()

Ответ 23

чтобы получить выборку с тем же именем class= name, вы можете сделать это, чтобы проверить, выбрана ли опция выбора.

var bOK = true;
$('.optKategorien').each(function(index,el){
    if($(el).find(":selected").text() == "") {
        bOK = false;
    }
});

Ответ 24

У меня была такая же проблема, и я понял, почему это не работает в моем случае
Страница html была разделена на разные фрагменты html, и я обнаружил, что у меня есть другое поле ввода, содержащее тот же Id select, в результате чего val() всегда был пустым
Я надеюсь, что это спасет день для тех, у кого есть подобные проблемы.

Ответ 25

чтобы использовать $ ("# id"). val, вы должны добавить значение к опции, например:

<label>Name</label>
<input type="text" name="name" />
<select id="aioConceptName">
    <option value="choose">choose io</option>
</select>

иначе, вы можете использовать

   $("#aioConceptName").find(':selected').text();

Я хочу, чтобы это помогло..

Ответ 26

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

 $('#id_Of_Parent_Selected_Tag').find(":selected").val();

И если вы хотите получить текст, используйте этот код:

 $('#id_Of_Parent_Selected_Tag').find(":selected").text();

Например => я выбрал этот тег:

<div id="id_Of_Parent_Selected_Tag">
<select >
        <option value="1">CR7</option>
        <option value="2">MESSI</option>
    </select>
</div>
<script>
 $('#id_Of_Parent_Selected_Tag').find(":selected").val();//OUTPUT:1 OR 2
 $('#id_Of_Parent_Selected_Tag').find(":selected").text();//OUTPUT:CR7 OR MESSI
</script>

Ответ 27

$('nameofDropDownList').prop('selectedIndex', whateverNumberasInt);

Представьте себе DDL как массив с индексами, вы выбираете один индекс. Выберите тот, который вы хотите установить с вашим JS.

Ответ 28

Вероятно, лучшая ставка для такого сценария - использовать метод изменения jQuery, чтобы найти текущее выбранное значение, например:

$('#aioConceptName').change(function(){

   //get the selected val using jQuery 'this' method and assign to a var
   var selectedVal = $(this).val();

   //perform the rest of your operations using aforementioned var

});

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

Надеюсь, это поможет!