2011-04-17 52 views
1

我想使用jQuery获得单选按钮的选中状态,但没有太多运气。获取单选按钮的检查状态

我的HTML看起来像:

<div class="fr"> 
     <label> 
      Recieve Email Updates?</label> 

     Yes 
      <input type="radio" value="True" name="ConsumerModel.RecieveSMS" id="ConsumerModel_RecieveSMS" data-val-required="The RecieveSMS field is required." data-val="true"> 
      No 
      <input type="radio" value="False" name="ConsumerModel.RecieveSMS" id="ConsumerModel_RecieveSMS" checked="checked"> 
    </div> 
<div class="fr"> 
     <label> 
      Recieve Email Updates?</label> 

     Yes 
      <input type="radio" value="True" name="ConsumerModel.RecieveEmail" id="ConsumerModel_RecieveEmail" data-val-required="The RecieveEmail field is required." data-val="true" checked="checked"> 
      No 
      <input type="radio" value="False" name="ConsumerModel.RecieveEmail" id="ConsumerModel_RecieveEmail"> 
    </div> 

我的jQuery的样子:

var sms= $('input[name=ConsumerModel.RecieveSMS]:checked').val(); 
    var email = $('input[name=ConsumerModel.RecieveEmail]:checked').val(); 

我的变量sms似乎是确定但电子邮件永远是一样的sms即使2是不同的。

我在做什么错?

+3

IDS _NEED TO BE_独特。这不是有效的HTML。 – Raynos 2011-04-17 00:28:56

+0

它是'receive',而不是'recieve' – ThiefMaster 2011-04-17 00:29:16

+1

@Raynos:不,名称**不需要**是唯一的。实际上,他们**具有相同的单选按钮才能工作。尽管你对身份证是正确的。 – ThiefMaster 2011-04-17 00:29:40

回答

5

因为你没有独特的名称/ ids代码中断。

检查live sample

基本上$("input[name=...]:checked")返回两个元素,而不是一个。

<div class="fr"> 
    <label> 
     Recieve Email Updates?</label> 

    Yes 
    <input type="radio" value="True" name="ConsumerModel.RecieveSMS" class="ConsumerModel_RecieveSMS" data-val-required="The RecieveSMS field is required." data-val="true"> 
    No 
    <input type="radio" value="False" name="ConsumerModel.RecieveSMS" class="ConsumerModel_RecieveSMS" checked="checked"> 
</div> 
<div class="fr"> 
    <label> 
     Recieve Email Updates?</label> 

    Yes 
    <input type="radio" value="True" name="ConsumerModel.RecieveEmail" class="ConsumerModel_RecieveEmail" data-val-required="The RecieveEmail field is required." data-val="true" checked="checked"> 
    No 
    <input type="radio" value="False" name="ConsumerModel.RecieveEmail" class="ConsumerModel_RecieveEmail"> 
</div> 

如果你改变了idclass不必须是唯一的,然后它工作。

Live example

+0

谢谢Raynos,在线工具非常酷。第一次我见过它:) – 2011-04-17 01:04:43

0
$('input:radio').is('checked');