Встановіть вибране радіо з групи радіо із значенням


153

Чому я борюся з цим?

Я маю значення: 5

Як перевірити перемикач групи "моя група" зі значенням 5?

$("input[name=mygroup]").val(5); // doesn't work?

Відповіді:


351

За допомогою селектора атрибутів можна вибрати вхідний елемент із відповідним значенням. Тоді вам слід встановити атрибут явно, використовуючи .attr:

var value = 5;
$("input[name=mygroup][value=" + value + "]").attr('checked', 'checked');

Оскільки jQuery 1.6, ви також можете використовувати .propметод з булевим значенням (це має бути кращим методом):

$("input[name=mygroup][value=" + value + "]").prop('checked', true);

Пам'ятайте, що спочатку потрібно видалити перевірений атрибут з будь-якої з кнопок радіо в одній групі радіо кнопок, лише тоді ви зможете додати перевірену властивість / атрибут до однієї з перемикачів цієї групи радіо кнопок.

Код для видалення перевіреного атрибута з усіх радіо кнопок однієї групи кнопок -

$('[name="radioSelectionName"]').removeAttr('checked');

.prop ("перевірено", правда), мабуть, краще або .is ()
bladefist

3
@bladefist: .isне допомогло б тут, але я згоден .prop. Тоді він був недоступний;) Оновить мою відповідь. Дякую!
Фелікс Клінг

4
Якщо значення перемикача має десяткове значення, вам потрібно покласти це значення в лапки
Роберт

1
@Robert: Так, напевно. З документації : "Це може бути як одне слово без котировки, так і рядок з цитуванням".
Фелікс Клінг

5
Дивіться відповідь Джонатана. Документи jQuery показують, що .val()підтримує встановлення значень для радіо або груп прапорців. Ця відповідь технічно працює, але є крутою та набагато менш читаною / запам'ятовується.
jinglesthula

144

Є кращий спосіб перевірки радіостанцій та прапорця; ви повинні передати масив значень методу val замість необробленого значення

Примітка. Якщо ви просто передасте значення самостійно (не знаходячись у масиві ), це призведе до того, що всі значення "mygroup" будуть встановлені на значення.

$("input[name=mygroup]").val([5]);

Ось документ jQuery, який пояснює, як це працює: http://api.jquery.com/val/#val-value

А .val([...])також працює з елементами форм , як <input type="checkbox">, <input type="radio">і <option>S всередині <select>.

Входи та параметри, що мають значення, що відповідає одному з елементів масиву, будуть перевірені або вибрані, тоді як ті, які мають значення, що не відповідають одному з елементів масиву, будуть невірно перевірені або не вибрані

Fiddle, що демонструє це: https://jsfiddle.net/92nekvp3/


Прийнята відповідь (ну, так і має бути). Станом на jQuery 1.0, дивіться останній приклад із документів (прокрутіть донизу): api.jquery.com/val Скопійовано тут: jsfiddle.net/JoePC/w1f9ykso
JoePC

Це хороший і послідовний спосіб встановити всі вхідні значення. Шкода, що мені знадобилося 6 років, щоб дізнатися про це.
Джефф Лоурі

1
Пробув досить довго, намагаючись зрозуміти, чому всі мої значення в групі встановлюються на передане значення замість перевірки значення. Виявляється, я передав значення сам, а не всередині масиву.
OXiGEN



7

Якщо ви змінюєте значення атрибуту, як згадане вище, changeподія не спрацьовує, тому при необхідності з якихось причин ви можете запустити його так

$('input[name=video_radio][value="' + r.data.video_radio + '"]')
       .prop('checked', true)
       .trigger('change');


1

Або ви можете просто написати атрибут значення для нього:

$(':radio[value=<yourvalue>]').attr('checked',true);

Це працює для мене.


0
var key = "Name_radio";
var val = "value_radio";
var rdo = $('*[name="' + key + '"]');
if (rdo.attr('type') == "radio") {
 $.each(rdo, function (keyT, valT){
   if ((valT.value == $.trim(val)) && ($.trim(val) != '') && ($.trim(val) != null))

   {
     $('*[name="' + key + '"][value="' + (val) + '"]').prop('checked', true);
   }
  })
}

4
Чи можете ви пояснити, що робить ваш код у вашій відповіді? Принаймні речення чи так. І як воно вирішує рішення. Дякую.
Алекс

0

Чиста версія JavaScript:

document.querySelector('input[name="myradio"][value="5"]').checked = true;

-1
$('input[name="mygroup"]').val([5])

1
Чи можете ви пояснити, чим ваше рішення відрізняється від інших, що вже надаються?
Джовані Веркоутерен

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