提问



我有两个单选按钮,想要发布所选按钮的值。
如何通过jQuery获取值?


我可以像这样得到所有这些:


$("form :radio")


我怎么知道哪一个被选中?

最佳参考


要获取ID为myForm的表单的所选 radioName项的值,请执行以下操作:


$('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>



用这个..


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

其它参考1


如果您已经有对单选按钮组的引用,例如:


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();

其它参考2


这应该工作:


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


注意在输入周围使用:检查而不是像Peter J的解决方案那样

其它参考3


您可以使用:checked选择器和无线电选择器。


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

其它参考4


如果你只想要布尔值,即如果它被检查或不试试这个:


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

其它参考5


获取所有无线电:


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


过滤以获得已检查的那个


radios.filter(":checked")

其它参考6


另一种选择是:


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

其它参考7


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

其它参考8


这是我如何编写表格并处理收到的收音机。


使用名为myForm的表单:


<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' />


然后获取选中的值变为:


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


在输入上有一个类名允许我轻松设置输入样式...

其它参考9


在我的情况下,我有一个表单中的两个单选按钮,我想知道每个按钮的状态。
以下这个对我有用:




// 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>标记)中,您可以执行以下操作:


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


其中selectOneRadio ID为 radiobutton_id ,表单ID为 form_id


请确保使用名称而不是 id ,因为jQuery使用此属性(名称由JSF自动生成,类似于控件ID)。

其它参考10


另外,检查用户是否没有选择任何内容。


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

其它参考11


如果你有单个形式的多个单选按钮然后


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

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


这对我有用。

其它参考12


我写了一个jQuery插件,用于设置和获取单选按钮值。它还尊重他们的改变事件。


(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);


将代码放在任何位置以启用插件。然后享受!它只是覆盖默认的val函数而不会破坏任何东西。


你可以访问这个jsFiddle来试一试它,看看它是如何工作的。


小提琴[66]

其它参考13


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

其它参考14


要获取使用类的所选无线电的值:


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

其它参考15


这很好用


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


工作演示 [67]


:checked选择器适用于checkboxesradio buttons和选择元素。仅对于选择元素,请使用:selected选择器。


:checked Selector的API [68]

其它参考16


我用这个简单的脚本


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

其它参考17


用这个:


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

其它参考18


如果你在1个表单上只有一组单选按钮,那么jQuery代码就像这样简单:


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

其它参考19


DEMO :https://jsfiddle.net/ipsjolly/xygr065w/[69]




	$(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>



我已经发布了一个库以帮助解决这个问题。实际上,拉出所有可能的输入值,但也包括检查了哪个单选按钮。你可以在https://github.com/mazondo/formalizedata [70]查看它。


它会给你一个js对象的答案,所以形式如下:


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


会给你:


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

其它参考20


要检索JavaScript数组中的所有单选按钮值,请使用以下jQuery代码:


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

其它参考21


尝试一下-


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

console.log(radioVal);

其它参考22


获得它的另一种方法:




 $("#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


$('label').click(function() {
  var selected = $('#' + $(this).attr('for')).val();

  ...
});




$(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>



$(function () {
// Someone has clicked one of the radio buttons
var myform= 'form.myform';
$(myform).click(function () {
    var radValue= "";
    $(this).find('input[type=radio]:checked').each(function () {
        radValue= $(this).val();
    });
  })
});

其它参考23


我需要做的是简化C#代码,这在前端JavaScript中尽可能多地做。我正在使用一个fieldset容器,因为我在DNN工作,它有自己的形式。所以我不能添加表格。


我需要测试3中的哪个文本框正在使用,如果是,那么搜索的类型是什么?从值开始,包含值,值的完全匹配。


HTML:


<fieldset id="fsPartNum" class="form-inline">
<div class="form-group">
    <label for="txtPartNumber">Part Number:</label>
    <input type="text" id="txtPartNumber" class="input-margin-pn" />
</div>
<div class="form-group">
    <label for="radPNStartsWith">Starts With: </label>
    <input type="radio" id="radPNStartsWith" name="partNumber" checked  value="StartsWith"/>
</div>
<div class="form-group">
    <label for="radPNContains">Contains: </label>
    <input type="radio" id="radPNContains" name="partNumber" value="Contains" />
</div>
<div class="form-group">
    <label for="radPNExactMatch">Exact Match: </label>
    <input type="radio" id="radPNExactMatch" name="partNumber" value="ExactMatch" />
</div>





我的JavaScript是:


        alert($('input[name=partNumber]:checked', '#fsPartNum').val()); 
    if(txtPartNumber.val() !== ''){
        message = 'Customer Part Number';
    }
    else if(txtCommercialPartNumber.val() !== ''){

    }
    else if(txtDescription.val() !== ''){

    }


只是说可以使用任何包含ID的包含标签。对于DNNers,这很有用。这里的最终目标是将在SQL Server中启动部件搜索所需的内容传递给中级代码。


这样我就不必复制更复杂的以前的C#代码。繁重的工作正在这里完成。


我不得不为此寻找一点,然后修补它以使其工作。所以对于其他DNNers,希望这很容易找到。

其它参考24


您可以调用函数 onChange()


  <input type="radio" name="radioName" value="1" onchange="radio_changed($(this).val())" /> 1 <br />
  <input type="radio" name="radioName" value="2" onchange="radio_changed($(this).val())"  /> 2 <br />
  <input type="radio" name="radioName" value="3"  onchange="radio_changed($(this).val())" /> 3 <br />

<script>
function radio_changed(val){
    alert(val);
}
</script>