jQuery для отримання та встановлення вибраного значення параметра елемента html select


126

Я намагаюся отримати і встановити вибране значення елемента вибору (спадний список) за допомогою jQuery.

для retrievel я спробував $("#myId").find(':selected').val(), а також, $("#myId").val()але обидва повертаються невизначеними.

Будь-яке розуміння цієї проблеми було б вдячно.


якщо ви використовуєте asp .net, вони не можуть бути однаковими після надання!
Пісня Рігоберта

Відповіді:


154

Те, як ви це маєте, є правильним на даний момент. Або ідентифікатор вибору не є тим, що ви говорите, або у вас є деякі проблеми в домі.

Перевірте ідентифікатор елемента, а також перевіряйте свою розмітку тут на W3c.

Без дійсного дому jQuery не може правильно працювати з селекторами.

Якщо ідентифікатори є правильними і ваш дім підтверджує, застосовується наступне:

Для читання Виберіть значення параметра

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

Щоб встановити значення вибору параметра

$('#selectId').val('newValue');

Читати вибраний текст

$('#selectId>option:selected').text();

@ Html.DropDownList ("CoinTypes", (SelectList) ViewBag.RequiredLevel, новий {@class = "форма-контроль", @ style = "висота: 21px; margin-top: 5px;"}), але $ ('# CoinTypes ') .val (@ ViewBag.CoinType); не вибирає
Нітхін Пол

@NithinPaul насправді не коментар, задайте питання, яке показує html, щоб хтось насправді міг спробувати і вирішити, що не так. Не впевнений, як ви можете очікувати, що хтось може розробити це з деяких веб-форм / коду mvc!
переосмислити

248

щоб отримати / встановити фактичне властивість selectedIndex вибраного елемента використання:

$("#select-id").prop("selectedIndex");

$("#select-id").prop("selectedIndex",1);

19
Важливо зазначити, що функція prop () була реалізована у версії 1.6, тому попередні версії не мають такої функціональності.
РобБ

18
Мені подобається ця відповідь, оскільки вона насправді відповідає на питання доступу до індексу, а не лише до значення.
Пабло Діаз

4
так. Я подумав, що це було оригінальне питання.
Джек Холт

Можливо, ви також можете використовувати attr з тим самим синтаксисом, і буде добре.
Іцхак

7
@ M.YitzhakSamuel .attr()і .prop()не є синонімами. Він буде працювати в певних випадках, коли атрибут також є властивістю, наприклад .attr('id'), дорівнює .prop('id'). У цьому випадку .prop('selectedIndex')дорівнює .get(0).selectedIndex.
WynandB

7

$('#myId').val() я повинен це зробити, не намагаючись:

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

4

Під час налаштування JQMне забудьте оновити UI:

$('#selectId').val('newValue').selectmenu('refresh', true);

Дякую за цей самородок - цікавилося, чому нове значення не відображається на екрані після зміни вибраногоIndex на $ ("# slot-choice"). Prop ("selectedIndex", n).
Самік Р

3

$("#myId").val()повинен працювати, якщо myidідентифікатор елемента вибору!

Це встановить вибраний елемент: $("#myId").val('VALUE');


1

Припустимо, ви створили спадний список, використовуючи тег SELECT, як описано нижче,

<select id="Country">

Тепер, якщо ви хочете побачити, яке обране значення випадає за допомогою JQuery тоді, просто поставте наступний рядок, щоб отримати це значення.

var result= $("#Country option:selected").text();

це буде добре працювати.


0

Я знаю, що це по-старому, але у мене просто був ведмедик з Бритвою, я не міг змусити його працювати, як би не старався. Тримався повернення як "невизначений", незалежно від того, чи використовував я "текст" або "html" для атрибута. Нарешті я додав у параметр атрибут "data-value", і він прочитав це просто чудово.

 <option value="1" data-value="MyText">MyText</option>

 var DisplayText = $(this).find("option:selected").attr("data-value");

0

$ ("опція #myId: вибрано") .text (); надасть вам текст, який ви вибрали у спадному елементі. будь-який спосіб ви можете змінити його на .val (); щоб отримати його значення. перевірте кодування нижче

<select id="myId">
    <option value="1">Mr</option>
    <option value="2">Mrs</option>
    <option value="3">Ms</option>`
    <option value="4">Dr</option>
    <option value="5">Prof</option>
</select>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.