Питання Як я можу дізнатись, який перемикач вибраний за допомогою jQuery?


У мене є дві перемикачі і ви хочете розмістити значення вибраного. Як я можу отримати значення за допомогою jQuery?

Я можу отримати всі вони так:

$("form :radio")

Як дізнатися, який з них вибрано?


2293
2018-02-27 19:53


походження




Відповіді:


Щоб отримати значення вибраний  radioName елемент форми з ідентифікатором myForm:

$('input[name=radioName]:checked', '#myForm').val()

Ось приклад:

$('#myForm input').on('change', function() {
   alert($('input[name=radioName]:checked', '#myForm').val()); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myForm">
  <input type="radio" name="radioName" value="1" /> 1 <br />
  <input type="radio" name="radioName" value="2" /> 2 <br />
  <input type="radio" name="radioName" value="3" /> 3 <br />
</form>


3535
2018-02-27 19:58



Я опинився з використанням цього: $ ('input input [type = radio]: checked') - juan
@PeterJ: Чому ви використовуєте два аргументи, а не просто '#myform input[name=radioName]:checked'? - Sophie Alpert
jQuery найкраще працює, якщо він правильно визначений, а вибір за ідентифікатором - це найефективніший селектор. Метод з двома аргументами - це просто інший спосіб це зробити. - Peter J
Чому немає: радіо: перевірено? - Bakaburg
Для найкращої продуктивності в документації рекомендується не використовувати: радіоперемикач. api.jquery.com/radio-selector - Peter J


Використовуй це..

$("#myform input[type='radio']:checked").val();

370
2018-01-07 00:45



Якщо ваша форма має декілька наборів перемикачів, то це, я думаю, отримає тільки значення першого набору. - Brad
Це лише повертає значення першої радіопередавальної кнопки, яка перевірена у формі. Це має бути зроблено так, як запропонував Петро. - MickJ
@MickJ Цей фрагмент коду такий самий, як і той, що був від Пітера Дж. ... З огляду на питання використання оригінального питання. Однак, якщо у вас є різні групи перемикачів, це не спрацює. Ось чому пролі краще використовувати [name = selector] - Lyth
Як зазначив @Brad, це отримає лише значення першого набору. Ви хочете замінити ".val ()" на ".map (function () {return this.value;}). Get ();" - am_
За що це коштує (так, я знаю оптимізацію, перш ніж потрібно бла бла), але для чистої продуктивності це працює швидше, особливо в старих браузерах: $("#myform").find("input[type='radio']:checked").val(); - Mark Schultheiss


Якщо у вас вже є посилання на групу перемикачів, наприклад:

var myRadio = $("input[name=myRadio]");

Використовувати filter() функція, ні find(). (find() це для розміщення елементів дитини / нащадка, в той час як filter() пошук елементів верхнього рівня у вашому виборі.)

var checkedValue = myRadio.filter(":checked").val();

Примітки: Ця відповідь спочатку виправляла іншу відповідь, яку рекомендувала використовувати find(), який, здається, з тих пір змінився. find() може бути корисним для ситуації, коли ви вже мали посилання на елемент контейнера, але не на перемикачі, наприклад:

var form = $("#mainForm");
...
var checkedValue = form.find("input[name=myRadio]:checked").val();

256
2018-02-09 18:25



Я просто хотів додати, для наочності, що пошук () фактично шукає все нащадкові елементи (які відповідають даному селектору). Якщо ви тільки хочете мати прямих дітей, користуйтеся дітьми (). - Matt Browne


Це має працювати:

$("input[name='radioName']:checked").val()

Зверніть увагу на "", що використовується навколо введення: перевірено, а не "" як рішення Пітера


119
2018-03-30 22:29





Ви можете скористатись: перемикачем, що перевірявся, разом із селектором радіо.

 $("form:radio:checked").val();

69
2018-02-27 20:00



Це виглядає добре, однак, jQuery документація Рекомендується використовувати [type = radio], а не: радіо для підвищення продуктивності. Це компроміс між читаемостью та продуктивністю. Я звичайно приймаю читабельність над продуктивністю на таких тривіальних питаннях, але в цьому випадку я думаю, що [type = radio] насправді ясніше. Таким чином, у цьому випадку це буде виглядати як $ ("форма введення [type = radio]: checked"). Val (). Хоча і є дійсна відповідь. - J.Money


Якщо ви хочете просто логічне значення, тобто, якщо воно перевірене або не спробуйте це:

$("#Myradio").is(":checked")

42
2017-08-30 20:27





Отримати всі радіостанції:

var radios = jQuery("input[type='radio']");

Фільтрувати, щоб отримати те, що було перевірено

radios.filter(":checked")

42
2017-09-01 17:55





Інший варіант:

$('input[name=radioName]:radio:checked').val()

35
2017-09-21 19:35



Частина ": radio" тут не потрібна. - Matt Browne