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>