Как я могу узнать, какая радиокнопка выбрана с помощью jQuery?

У меня есть две радиокнопки, и я хочу опубликовать значение выбранного. Как я могу получить значение с помощью jQuery?

Я могу получить их все так:

$("form :radio")

Как я узнаю, какой из них выбран?

Всего 26 ответов


Использовать этот..

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

Если у вас уже есть ссылка на группу переключателей, например:

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

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

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

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

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

Это должно работать:

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

Обратите внимание, что «» используется вокруг ввода: проверено, а не «», как решение Питера J


Вы можете использовать: проверенный селектор вместе с радио селектором.

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

Если вы хотите просто логическое значение, то есть, если оно проверено или нет, попробуйте это:

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

Получить все радио:

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

Фильтр, чтобы получить тот, который проверен

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

Другой вариант:

radios.filter(":checked")

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

Вот как я мог бы написать форму и обработать получение проверенного радио.

Используя форму myForm:

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

Получить значение из формы:

<form id='myForm'>
    <input type='radio' name='radio1' class='radio1' value='val1' />
    <input type='radio' name='radio1' class='radio1' value='val2' />
    ...
</form>

Если вы не публикуете форму, я бы упростил ее, используя:

$('#myForm .radio1:checked').val();

Тогда получение проверенного значения становится:

<input type='radio' class='radio1' value='val1' />
<input type='radio' class='radio1' value='val2' />

Наличие имени класса на входе позволяет мне легко стилизовать входы ...


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

 // get radio buttons value console.log( "radio1: " + $('input[id=radio1]:checked', '#toggle-form').val() ); console.log( "radio2: " + $('input[id=radio2]:checked', '#toggle-form').val() ); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form id="toggle-form"> <div id="radio"> <input type="radio" id="radio1" name="radio" checked="checked" /><label for="radio1">Plot single</label> <input type="radio" id="radio2" name="radio"/><label for="radio2">Plot all</label> </div> </form> 


В сгенерированном JSF- переключателе (используя <h:selectOneRadio> ) вы можете сделать это:

    $('.radio1:checked').val();

где selectOneRadio ID - radiobutton_id, а идентификатор формы - form_id .

Обязательно используйте имя вместо id , как указано, потому что jQuery использует этот атрибут ( имя генерируется автоматически с помощью JSF, напоминающего идентификатор элемента управления).


Я написал плагин jQuery для установки и получения значений переключателей. Это также уважает событие "изменения" на них.

radiobuttonvalue = jQuery("input[name='form_id:radiobutton_id']:checked").val();

Разместите код в любом месте, чтобы включить надстройку. Тогда наслаждайтесь! Он просто переопределяет стандартную функцию val, ничего не нарушая.

Вы можете посетить этот jsFiddle, чтобы попробовать его в действии и посмотреть, как он работает.

| улучшить этот ответ

    14

    Также проверьте, не выбрал ли пользователь ничего.

    (function ($) {
    
        function changeRadioButton(element, value) {
            var name = $(element).attr("name");
            $("[type=radio][name=" + name + "]:checked").removeAttr("checked");
            $("[type=radio][name=" + name + "][value=" + value + "]").attr("checked", "checked");
            $("[type=radio][name=" + name + "]:checked").change();
        }
    
        function getRadioButton(element) {
            var name = $(element).attr("name");
            return $("[type=radio][name=" + name + "]:checked").attr("value");
        }
    
        var originalVal = $.fn.val;
        $.fn.val = function(value) {
    
            //is it a radio button? treat it differently.
            if($(this).is("[type=radio]")) {
    
                if (typeof value != 'undefined') {
    
                    //setter
                    changeRadioButton(this, value);
                    return $(this);
    
                } else {
    
                    //getter
                    return getRadioButton(this);
    
                }
    
            } else {
    
                //it wasn't a radio button - let's call the default val function.
                if (typeof value != 'undefined') {
                    return originalVal.call(this, value);
                } else {
                    return originalVal.call(this);
                }
    
            }
        };
    })(jQuery);
    

    Если у вас есть несколько переключателей в одной форме, то

    var radioanswer = 'none'
    if ($('input[name=myRadio]:checked').val() != null) {           
       radioanswer = $('input[name=myRadio]:checked').val();
    }
    

    Это работает для меня.


    Это отлично работает

    var myRadio1 = $('input[name=radioButtonName1]');
    var value1 = myRadio1.filter(':checked').val();
    
    var myRadio2 = $('input[name=radioButtonName2]');
    var value2 = myRadio2.filter(':checked').val();
    

    Рабочая Демо

    Селектор :checked работает для checkboxes , radio buttons и элементов выбора. Только для выбранных элементов, используйте селектор :selected .

    API для :checked Selector


    $('input[type="radio"][class="className"]:checked').val()
    

    Чтобы получить значение выбранного радио, которое использует класс:

     $(".Stat").click(function () {
         var rdbVal1 = $("input[name$=S]:checked").val();
     }
    

    Я использую этот простой скрипт

    $('.class:checked').val()
    

    Использовать этот:

    $('input[name="myRadio"]').on('change', function() {
      var radioValue = $('input[name="myRadio"]:checked').val();        
      alert(radioValue); 
    });
    

    ДЕМО : https://jsfiddle.net/ipsjolly/xygr065w/

      $(function(){ $("#submit").click(function(){ alert($('input:radio:checked').val()); }); }); 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr> <td>Sales Promotion</td> <td><input type="radio" name="q12_3" value="1">1</td> <td><input type="radio" name="q12_3" value="2">2</td> <td><input type="radio" name="q12_3" value="3">3</td> <td><input type="radio" name="q12_3" value="4">4</td> <td><input type="radio" name="q12_3" value="5">5</td> </tr> </table> <button id="submit">submit</button> 


    Если у вас есть только 1 набор переключателей на 1 форме, код jQuery очень прост:

    value = $('input[name=button-name]:checked').val();
    

    Я выпустил библиотеку, чтобы помочь с этим. На самом деле извлекает все возможные входные значения, но также включает переключатель, который был отмечен. Вы можете проверить это на https://github.com/mazondo/formalizedata

    Он даст вам объект ответов js, поэтому такая форма:

    $( "input:checked" ).val()
    

    дам тебе:

    <form>
    <input type="radio" name"favorite-color" value="blue" checked> Blue
    <input type="radio" name="favorite-color" value="red"> Red
    </form>
    

    Чтобы получить все значения переключателей в массиве JavaScript, используйте следующий код jQuery:

    $("form").formalizeData()
    {
      "favorite-color" : "blue"
    }
    

    попытайся-

    var values = jQuery('input:checkbox:checked.group1').map(function () {
        return this.value;
    }).get();
    

    Еще один способ получить это:

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


    Из я придумал альтернативный способ доступа к выбранному в данный момент input когда вы находитесь в пределах события click для соответствующей метки. Причина в том, что вновь выбранный input не обновляется до тех пор, пока не будет щелкнуто событие label .

    TL; DR

    var radioVal = $("#myform").find("input[type='radio']:checked").val();
    
    console.log(radioVal);
    

     $(function() { // this outright does not work properly as explained above $('#reported label').click(function() { var query = $('input[name="filter"]:checked').val(); var time = (new Date()).toString(); $('.query[data-method="click event"]').html(query + ' at ' + time); }); // this works, but fails to update when same label is clicked consecutively $('#reported input[name="filter"]').on('change', function() { var query = $('input[name="filter"]:checked').val(); var time = (new Date()).toString(); $('.query[data-method="change event"]').html(query + ' at ' + time); }); // here is the solution I came up with $('#reported label').click(function() { var query = $('#' + $(this).attr('for')).val(); var time = (new Date()).toString(); $('.query[data-method="click event with this"]').html(query + ' at ' + time); }); }); 
     input[name="filter"] { display: none; } #reported label { background-color: #ccc; padding: 5px; margin: 5px; border-radius: 5px; cursor: pointer; } .query { padding: 5px; margin: 5px; } .query:before { content: "on " attr(data-method)": "; } [data-method="click event"] { color: red; } [data-method="change event"] { color: #cc0; } [data-method="click event with this"] { color: green; } 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form id="reported"> <input type="radio" name="filter" id="question" value="questions" checked="checked"> <label for="question">Questions</label> <input type="radio" name="filter" id="answer" value="answers"> <label for="answer">Answers</label> <input type="radio" name="filter" id="comment" value="comments"> <label for="comment">Comments</label> <input type="radio" name="filter" id="user" value="users"> <label for="user">Users</label> <input type="radio" name="filter" id="company" value="companies"> <label for="company">Companies</label> <div class="query" data-method="click event"></div> <div class="query" data-method="change event"></div> <div class="query" data-method="click event with this"></div> </form> 



    Есть идеи?

    10000