jQuery获取所选单选按钮的值


556

问题陈述很简单。我需要查看用户是否已从广播组中选择了一个单选按钮。组中的每个单选按钮共享相同的ID。

问题是我无法控制表单的生成方式。这是单选按钮控制代码的示例代码:

<input type="radio" name='s_2_1_6_0' value='Mail copy to my bill to address' id = "InvCopyRadio" onchange = 'SWESubmitForm(document.SWEForm2_0,s_4,"","1-DPWJJF")' style="height:20;width:25" tabindex=1997 >

除此之外,当一个单选按钮被选中它不添加一个“选中”属性只是文字对照检查 (我猜只是属性检查没有值)。以下是选定的无线电控件的外观

<input type="radio" checked name='s_2_1_6_0' value='Mail copy to my bill to address' id = "InvCopyRadio" onchange = 'SWESubmitForm(document.SWEForm2_0,s_4,"","1-DPWJJF")' style="height:20;width:25" tabindex=1997 >

有人可以帮助我使用可以帮助我获取选中的单选按钮值的jQuery代码吗?


71
您有多个具有相同ID的元素吗?这太可怕了。
马特·鲍尔,


它们如何使用相同的ID一起工作?通过ID评估时,评估不会在第一个匹配的元素处停止吗?它们的目的是在不同时间显示动态元素吗?
马克·卡彭特(Marc Carpenter Jr)

1
仅供参考,ASP.NET MVC的@ Html.RadioButtonFor帮助程序将生成具有相同ID的所有单选按钮。哎呀
Triynko

Answers:


1119

随便使用。

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

很容易。


25
不要忘记引号:$(“ input [name ='” + fieldName +“']:checked”)。val();
Atara 2015年

4
@Guraprasad Rao:这是正确的代码-在这种情况下不需要引号。试试看。
Stefan

2
为什么返回“ on”而不是我在HTML中指定的值?编辑:因为我的价值观周围没有引号。
文森特

3
$('input [name =“ name_of_your_radiobutton”]:checked')。val();
Sameera Prasad Jayasinghe

1
请注意,如果未选择任何按钮null,这只会返回,这是合乎逻辑的,但是当您习惯于""通过.val()调用将其视为默认值时,有时会使您感到困惑。
xji

313

首先,您不能有多个具有相同ID的元素。我知道您说过您无法控制表单的创建方式,但是...试图以某种方式从收音机中删除所有ID,或使其唯一。

要获取所选单选按钮的值,请使用:checked过滤器按名称选择它。

var selectedVal = "";
var selected = $("input[type='radio'][name='s_2_1_6_0']:checked");
if (selected.length > 0) {
    selectedVal = selected.val();
}

编辑

因此,您无法控制名称。在这种情况下,我想将所有单选按钮都放在div内,命名为radioDiv,然后稍加修改选择器:

var selectedVal = "";
var selected = $("#radioDiv input[type='radio']:checked");
if (selected.length > 0) {
    selectedVal = selected.val();
}

75

获取所选单选按钮的值的最简单方法如下:

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

选择器之间不得使用空格。


最简单的选择是。
andreszs

44
$("#radioID") // select the radio by its id
    .change(function(){ // bind a function to the change event
        if( $(this).is(":checked") ){ // check if the radio is checked
            var val = $(this).val(); // retrieve the value
        }
    });

确保将其包装在DOM ready函数中($(function(){...});$(document).ready(function(){...});)。


我总是用这段代码得到一个空值。.我猜这是由于我没有一个属性值已被检查的文本而已(我不确定是否可以将其视为一个属性)
user1114212

您是否通过ID选择单选按钮?您更改radioID了ID吗?
普拉格

37
  1. 在您的代码中,jQuery仅查找名称为q12_3的输入的第一个实例,在这种情况下,该实例的值为1。您需要名称为q12_3的输入为:checked
$(function(){
    $("#submit").click(function() {     
        alert($("input[name=q12_3]:checked").val());
    });
});
  1. 请注意,上面的代码与使用的代码不同 .is(":checked")。jQuery的is() 函数返回一个布尔值(真或假)而不是一个元素。

27
<input type="radio" class="radioBtnClass" name="numbers" value="1" />1<br/>
<input type="radio" class="radioBtnClass" name="numbers" value="2" />2<br/>
<input type="radio" class="radioBtnClass" name="numbers" value="3" />3<br/>

这将返回选中的单选按钮值。

if($("input[type='radio'].radioBtnClass").is(':checked')) {
    var card_type = $("input[type='radio'].radioBtnClass:checked").val();
    alert(card_type);
}

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

用于嵌套属性

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

不要忘记用大括号命名


20

获取所有收音机:

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

筛选以获取已检查的内容

radios.filter(":checked");

要么

查找单选按钮值的另一种方法

var RadeoButtonStatusCheck = $('form input[type=radio]:checked').val();

3
我使用是$('[name=your_inputs_names]:checked').val()因为它们始终具有相同的唯一名称
vladkras

4
善用.filter()
Mark Carpenter Jr

2
.filter()。我希望这个答案可以放在顶部。
尤斯里尔·毛里丹·拉吉

16

要获取所选单选按钮的值,请使用RadioButtonName和包含RadioButton的表单ID。

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

或仅

$('form input[type=radio]:checked').val();

12

检查它工作正常的示例

<div class="dtl_radio">
  Metal purity : 
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="92" checked="">
    92 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="75">
    75 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="58.5">
    58.5 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="95">
    95 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="59">
    59 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="76">
    76 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="93">
    93 %
  </label>
   </div>

var check_value = $('.gold_color:checked').val();


12

参见下面的工作示例,其中包含与不同部分相关联的无线电组的集合。您的命名方案很重要,但是理想情况下,无论如何,您都应该尝试对输入使用一致的命名方案(尤其是当它们位于此处的部分中时)。

$('#submit').click(function(){
  var section = $('input:radio[name="sec_num"]:checked').val();
  var question = $('input:radio[name="qst_num"]:checked').val();
  
  var selectedVal = checkVal(section, question);
  $('#show_val_div').text(selectedVal);
  $('#show_val_div').show();
});

function checkVal(section, question) {
  var value = $('input:radio[name="sec'+section+'_r'+question+'"]:checked').val() || "Selection Not Made";
  return value;
}
* { margin: 0; }
div { margin-bottom: 20px; padding: 10px; }
h5, label { display: inline-block; }
.small { font-size: 12px; }
.hide { display: none; }
#formDiv { padding: 10px; border: 1px solid black; }
.center { display:block; margin: 0 auto; text-align:center; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="center">
  <div>
    <h4>Section 1</h4>

    <h5>First question text</h5>
    <label class="small"><input type="radio" name="sec1_r1" value="(1:1) YES"> YES</label>
    <label class="small"><input type="radio" name="sec1_r1" value="(1:1) NO"> NO</label>
    <br/>
    <h5>Second question text</h5>
    <label class="small"><input type="radio" name="sec1_r2" value="(1:2) YES"> YES</label>
    <label class="small"><input type="radio" name="sec1_r2" value="(1:2) NO"> NO</label>
    <br/>
    <h5>Third Question</h5>
    <label class="small"><input type="radio" name="sec1_r3" value="(1:3) YES"> YES</label>
    <label class="small"><input type="radio" name="sec1_r3" value="(1:3) NO"> NO</label>
  </div>

  <div>
    <h4>Section 2</h4>
    <h5>First question text</h5>
    <label class="small"><input type="radio" name="sec2_r1" value="(2:1) YES"> YES</label>
    <label class="small"><input type="radio" name="sec2_r1" value="(2:1) NO"> NO</label>
    <br/>
    <h5>Second question text</h5>
    <label class="small"><input type="radio" name="sec2_r2" value="(2:2) YES"> YES</label>
    <label class="small"><input type="radio" name="sec2_r2" value="(2:2) NO"> NO</label>
    <br/>
    <h5>Third Question</h5>
    <label class="small"><input type="radio" name="sec2_r3" value="(2:3) YES"> YES</label>
    <label class="small"><input type="radio" name="sec2_r3" value="(2:3) NO"> NO</label>
  </div>

  <div>
    <h4>Section 3</h4>
    <h5>First question text</h5>
    <label class="small"><input type="radio" name="sec3_r1" value="(3:1) YES"> YES</label>
    <label class="small"><input type="radio" name="sec3_r1" value="(3:1) NO"> NO</label>
    <br/>
    <h5>Second question text</h5>
    <label class="small"><input type="radio" name="sec3_r2" value="(3:2) YES"> YES</label>
    <label class="small"><input type="radio" name="sec3_r2" value="(3:2) NO"> NO</label>
    <br/>
    <h5>Third Question</h5>
    <label class="small"><input type="radio" name="sec3_r3" value="(3:3) YES"> YES</label>
    <label class="small"><input type="radio" name="sec3_r3" value="(3:3) NO"> NO</label>
  </div>
</div>


<div id="formDiv" class="center">
  <form target="#show_val_div" method="post">
    <p>Choose Section Number</p>
    <label class="small">
      <input type="radio" name="sec_num" value="1"> 1</label>
    <label class="small">
      <input type="radio" name="sec_num" value="2"> 2</label>
    <label class="small">
      <input type="radio" name="sec_num" value="3"> 3</label>
    <br/><br/>
    
    <p>Choose Question Number</p>
    <label class="small">
      <input type="radio" name="qst_num" value="1"> 1</label>
    <label class="small">
      <input type="radio" name="qst_num" value="2"> 2</label>
    <label class="small">
      <input type="radio" name="qst_num" value="3"> 3</label>
    <br/><br/>
    
    <input id="submit" type="submit" value="Show Value">
    
  </form>
  <br/>
  <p id="show_val_div"></p>
</div>
<br/><br/><br/>


12

使用以下代码

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

请注意,应该定义值属性,以便结果中可以是“男性”或“女性”。

<div id='div_container'>
<input type="radio" name="Gender" value="Male" /> Male <br />
<input type="radio" name="Gender" value="Female" /> Female
</div>

7

用例子试试

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1  /jquery.min.js"></script>
<form id="myForm">
<input type="radio" name="radio" value="first"/> 1 <br/>
<input type="radio" name="radio" value="second"/> 2 <br/>
</form>



<script>
$(document).ready(function () {
    $('#myForm').on('click', function () {
        var value = $("[name=radio]:checked").val();

        alert(value);
    })
});
</script>


6
if (!$("#InvCopyRadio").prop("checked") && $("#InvCopyRadio").prop("checked"))
    // do something

1
为什么要比较字符串,undefined直到确定值一定是checked?不需要jQuery。
德文·伯克

在问题中,我没有看到任何建议从一开始就选中一个单选按钮的信息。我的意思是,在大多数情况下,单选按钮就是这样。因此,在我们必须检查且未选择任何对象的情况下,attr(“ checked”)将返回一个空对象。
Tadej Magajna 2011年

是的,但是我只是想返回null不会导致错误,因此"undefined"不需要进行比较。
德文·伯克

5

您可以使用javascript / jQuery中的ID通过ID获得所选单选按钮的值。

$("#InvCopyRadio:checked").val();

我希望这将有所帮助。


非常有效!
MHJ

4

解释此简单主题的最佳方法是给出简单的示例和参考链接:-

在下面的示例中,我们有两个单选按钮。如果用户选择任何单选按钮,我们将在警报框中显示选定的单选按钮值。

HTML:

<form id="Demo">
<input type="radio" name="Gender" value="Male" /> Male <br />
<input type="radio" name="Gender" value="Female" /> Female<br />
<input type="radio" name="Gender" value="others" /> others <br />
</form>

jQuery的:-

 $(document).ready(function(){
        $('#Demo input').on('change', function() {
            alert($('input[name="Gender"]:checked', '#Demo').val());
        });
    });

3
<div id="subscriptions">
 Company Suscription: <input type="radio" name="subsrad" value="1">
 Customer Subscription:<input type="radio" name="subsrad" value="2">
 Manully Set:<input type="radio" name="subsrad" value="MANUAL">
 NO Subscription:<input type="radio" name="subsrad" value="0">
 </div>

并处理jquery以获取有关值设置/通过div ID更改的警报:

$("#subscriptions input") // select the radio by its id
    .on('change', function(){ // bind a function to the change event
    alert($('input[name="subsrad"]:checked', '#subscriptions').val());
            });

这很容易。...:-}


使用父代ID进行此操作的更简单方法是... $(“#subscriptions”)。on(“ change”,function(){var selection = $(this).find(“ input:checked”) .val(); alert(selection);});
MistyDawn

3

另一种易于理解的方式...正在运行:

HTML代码:

 <input type="radio" name="active_status" class="active_status" value="Hold">Hold 
 <input type="radio" name="active_status" class="active_status" value="Cancel">Cancel 
 <input type="radio" name="active_status" class="active_status" value="Suspend">Suspend

jQuery代码:

$(document).on("click", ".active_status", function () {
 var a = $('input[name=active_status]:checked').val();  
 (OR)   
 var a = $('.active_status:checked').val();
 alert(a);
});

3

多组单选按钮隐式值到数组

var arr = [];
    function r(n) {


        var section = $('input:radio[name="' + n + '"]:checked').val();
        arr[n] = section;

        console.log(arr)
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" onchange="r('b1')" class="radioID" name="b1" value="1">1
<input type="radio" onchange="r('b1')"  class="radioID" name="b1" value="2"  >2
<input type="radio" onchange="r('b1')"   class="radioID" name="b1" value="3">3

<br>

<input type="radio" onchange="r('b2')" class="radioID2" name="b2" value="4">4
<input type="radio" onchange="r('b2')"  class="radioID2" name="b2" value="5"  >5
<input type="radio" onchange="r('b2')"   class="radioID2" name="b2" value="6">6


能否请您添加一些解释,以便更多的人可以理解。
Shanteshwar Inde

3

我知道我要参加这晚。但值得一提的是

<label class="custom-control-label" for="myRadioBtnName">Personal Radio Button</label>

然后我在js中检查了这一点。可能像

$(document).ready(function () { 

$("#MyRadioBtnOuterDiv").click(function(){
    var radioValue = $("input[name=myRadioButtonNameAttr]:checked").val();
    if(radioValue === "myRadioBtnName"){
        $('#showMyRadioArea').show();
    }else if(radioValue === "yourRadioBtnName"){
        $('#showYourRadioArea').show();
    }
});
});

`


2

我不是一个JavaScript的人,但是我在这里找到了搜索此问题的人。对于谁用谷歌搜索并在这里找到,我希望这会有所帮助。因此,就像我们是否有单选按钮列表一样:

<div class="list">
    <input type="radio" name="b1" value="1">
    <input type="radio" name="b2" value="2" checked="checked">
    <input type="radio" name="b3" value="3">
</div>

我可以找到使用此选择器选择的一个:

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

即使没有选择任何元素,我也不会得到未定义的错误。因此,在获取元素值之前,您不必编写额外的if语句。

这是非常基本的jsfiddle示例


1
这是对无线电输入使用的name属性的错误使用。如果只希望允许组中的单个值,则组中的单选按钮必须具有相同的名称。这样,它就像复选框一样工作,允许多个选择而不是组中的单个选择。
MistyDawn

@MistyDawn你是对的,我什至不记得我是怎么写的,可能是因为修复了一个错误。
Yusuf Uzun

2

这是2个单选按钮,即rd1和Radio1

<input type="radio" name="rd" id="rd1" />
<input type="radio" name="rd" id="Radio1" /> 

通过检查单个is(“:checked”)属性来检查哪个单选按钮被选中的最简单方法

if ($("#rd1").is(":checked")) {
      alert("rd1 checked");
   }
 else {
      alert("rd1 not checked");
   }

这不是一个非常可靠的解决方案。最好只包含一个div,然后查看它下面的所有无线电并选择选中的复选框。您还可以查看具有特定名称的所有无线电,然后找到选中的无线电。这减少了每次添加按钮时都必须更改代码的麻烦。
理查德·杜尔

如果您的页面有两个以上的无线电输入,这可能会非常令人困惑,并且为每个无线电分配一个ID将非常耗时。这种方法通常不会被认为是好的做法。
MistyDawn

2

input如其他答案所建议的,甚至没有必要。也可以使用以下代码:

var variable_name = $("[name='radio_name']:checked").val();

这与五年前的答案基本相同,只是没有input且带有不必要的引号。
异端猴子

这些引号不是不必要的,我发布上述答案的原因是让人们知道输入是不必要的
shivamag00 19/12/27

然后,您应该考虑编辑问题以提及这些原因,而不要使用命令“使用以下代码”。您可能希望引用引用引号的来源。
异端猴子

@HereticMonkey完成编辑...谢谢:)
shivamag00

1
    <input type="radio" name='s_2_1_6_0' value='Mail copy to my bill to address' id = "InvCopyRadio" onchange = 'SWESubmitForm(document.SWEForm2_0,s_4,"","1-DPWJJF")' style="height:20;width:25" tabindex=1997 >

$(function() {
      $("#submit").click(function() {
        alert($('input[name=s_2_1_6_0]:checked').val());
      });
    });`

1
HTML Code
<input id="is_verified" class="check" name="is_verified" type="radio" value="1"/>
<input id="is_verified" class="check" name="is_verified" type="radio" checked="checked" value="0"/>
<input id="submit" name="submit" type="submit" value="Save" />

Javascript Code
$("input[type='radio'].check").click(function() {
    if($(this).is(':checked')) {
        if ($(this).val() == 1) {
            $("#submit").val("Verified & Save");
        }else{
            $("#submit").val("Save");
        }
    }
});

1

如果您不知道具体的名称或想要检查表单中的所有无线电输入,则可以使用全局变量来为每个无线电组仅检查一次该值:

        var radio_name = "";
        $("form).find(":radio").each(function(){
            if (!radio_name || radio_name != $(this).attr('name')) {
                radio_name = $(this).attr('name');
                var val = $('input[name="'+radio_name+'"]:checked').val();
                if (!val) alert($('input[name="'+radio_name+'"]:checked').val());
            }
        });`
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.