jQuery отримує вибране значення параметра (не текст, а атрибут 'value')


156

Гаразд, у мене є цей код:

<select name="selector" id="selector">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>

І я хотів би вибрати значення параметра. Приклад: вибрано "Варіант 2", а значення його - "2". Значення "2" - це значення, яке мені потрібно отримати, а не "Варіант 2".


Демонстраційний посібник для отримання: freakyjolly.com/… Демоурок для налаштування freakyjolly.com/… Одиночний та декілька Selectbox
код шпигун

Відповіді:


271

20.04.2020: Виправлена ​​стара відповідь

Використовуйте : вибраний селектор psuedo для вибраних параметрів, а потім скористайтесь функцією .val, щоб отримати значення параметра.

$('select[name=selector] option').filter(':selected').val()

Бічна примітка : Використовувати фільтр краще, ніж використовувати :selectedселектор безпосередньо в першому запиті.

Якщо всередині обробника змін, ви можете просто використовувати this.valueдля отримання вибраного значення параметра. Дивіться демонстрацію для додаткових варіантів.

//ways to retrieve selected option and text outside handler
console.log('Selected option value ' + $('select option').filter(':selected').val()); 
console.log('Selected option value ' + $('select option').filter(':selected').text());

$('select').on('change', function () {
  //ways to retrieve selected option and text outside handler
  console.log('Changed option value ' + this.value);
  console.log('Changed option text ' + $(this).find('option').filter(':selected').text());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<select>
  <option value="1" selected>1 - Text</option>
  <option value="2">2 - Text</option>
  <option value="3">3 - Text</option>
  <option value="4">4 - Text</option>
</select>

Стара відповідь:

Редагувати: Як зазначено багато, це не повертає вибране значення параметра.

~~ Використовуйте .val, щоб отримати значення вибраного параметра. Дивись нижче,

$('select[name=selector]').val()~~

5
Зробіть ур-тест:$('select[name=selector]').change(function() { alert($(this).val()); });
KingRider

4
Зауважте, що якщо для вибраного параметра не valueвказаний атрибут, мітка (тобто <option>label</option>) буде повернута. Не завжди може бути те, що ти хочеш. Звичайно, у більшості застосунків вказане значення.
Czechnology

115

Я просто хотів поділитися своїм досвідом

Для мене,

$('#selectorId').val()

повернуто null.

Мені довелося користуватися

$('#selectorId option:selected').val()


1
Це був конкретний випадок браузера? Чи не дозволяла це нова версія хрому, чи IE не підтримував її?
Теодор Сольбьорг

1
Це було в новітній версії Chrome. Можливо, і в Firefox, але не впевнений.
Девід Торрес

Не впевнений, чому $('#selectorId option:selected').val()не працював для мене. Натомість я використав$('select option:selected').val()
Франциско Кінтеро

1
@Francisco Проблема полягає в тому $('select option:selected').val(), що прийме значення першого селектора в коді HTML. Тоді як у $('#selectorId option:selected').val()вас може бути значення селектора, ідентифікатор якого ви вказали. Подвійна перевірка на помилки друку. Ось приклад, який показує те, що я щойно сказав: codepen.io/anon/pen/Nqgqyz
Девід Торрес


9

Вам потрібно додати ідентифікатор до вибраного. Тоді:
$('#selectorID').val()


я додав ідентифікатор, просто забув додати його сюди.
n00b

1
З того, що я прочитав, використовуючи ідентифікатор як селектор, це найшвидший метод.
Маркус

5

Спробуйте це:

$(document).ready(function(){
    var data= $('select').find('option:selected').val();
});

або

var data= $('select').find('option:selected').text();

4

ви можете використовувати jqueryнаступним чином

СКРИПТ

  $('#IDOfyourdropdown').change(function(){
    alert($(this).val());
  });

FIDDLE тут


2

Для вибраного типу

<select class="btn btn-info pull-right" id="list-name" style="width: auto;">
   <option id="0">CHOOSE AN OPTION</option>
   <option id="127">John Doe</option>
   <option id="129" selected>Jane Doe</option>

... ви можете отримати ідентифікатор таким чином:

$('#list-name option:selected').attr('id');

Або ви можете скористатися цінністю натомість і отримати її найпростішим способом ...

<select class="btn btn-info pull-right" id="list-name" style="width: auto;">
   <option value="0">CHOOSE AN OPTION</option>
   <option value="127">John Doe</option>
   <option value="129" selected>Jane Doe</option>

подобається це:

$('#list-name').val();

2

Один з моїх варіантів не має значення: <option>-----</option>. Я намагався використовувати, if (!$(this).val()) { .. }але я отримував дивні результати. Виявляється, якщо у вас немає valueатрибуту для вашого <option>елемента, він повертає текст всередині нього замість порожнього рядка. Якщо ви не хочете val()повернути нічого за свій варіант, обов’язково додайте value="".


0

Подивіться на приклад:

    <select class="element select small" id="account_name" name="account_name"> 

        <option value="" selected="selected">Please Select</option>           
        <option value="paypal" >Paypal</option>
        <option value="webmoney" >Webmoney</option>

    </select>

 <script type="text/javascript">

        $(document).ready(function(){ 
             $('#account_name').change(function(){
               alert($(this).val());                                                          
             });
        });
 </script>

0
$('#selectorID').val();

АБО

$('select[name=selector]').val();

АБО

$('.class_nam').val();

@FarhadBagherlo "Продовжуйте друкувати" - не корисний коментар для редагування! Підсумуйте свої зміни, щоб читачі історії редагування зрозуміли, що ви зробили, не перевіряючи кожного зміненого символу. Дякую!
jpaugh

0

цей код працює для мене дуже добре: це поверне значення вибраної опції. $ ('# select_id'). find ('параметр: вибрано'). val ();


0
 $(document ).ready(function() {
    $('select[name=selectorname]').change(function() { 
     alert($(this).val());});
 });

Хоча цей код може вирішити проблему, найкраще додати розробки та пояснити, як він працює для людей, які, можливо, не розуміють цей фрагмент коду.
папір1111

@ paper1111 - це прості функції. Я можу пояснити, чи потрібно це. $ ('select [name = here is select box name]) .change () - це означає, що коли ми змінимо функцію select box, буде працювати. $ (this) .val () - повертає вибране значення опції
Turan Zamanlı

0

Посилання на джерело

Використовуйте jQuery val () для отримання GET вибраного значення, а text () для тексту GET Option.

    <select id="myDropDown" class="form-control">
        <option value="0">Select Value 0</option>
        <option value="8">Option value 8</option>
        <option value="5">Option value 5</option>
        <option value="4">Option value 4</option>
    </select>

Змінити подію у спадному меню Вибір

        $("#myDropDown").change(function () {

            // Fetching Value
            console.log($(this).val());

            // Fetching Text
            console.log($(this).find('option:selected').text());

            alert('Value: '+$(this).val()+' | Text: '+$(this).find('option:selected').text());
        });

Клацніть кнопку

        $("button").click(function () {

        // Fetching Value
            console.log($("#myDropDown").val());

    // Fetching Text
            console.log($('#myDropDown option:selected').text());

            alert('Value: '+$("#myDropDown").val()+' | Text: '+$('#myDropDown option:selected').text());
        });
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.