单选按钮的选定值不会更改

时间:2017-01-07 16:53:19

标签: javascript jquery html css asp.net-mvc

在视图中,我有两个单选按钮:

@Html.RadioButtonFor(c => c.CampaignType, "Exclusive")<label>Exclusive</label>
@Html.RadioButtonFor(c => c.CampaignType, "Shared")<label>Shared</label>

在页面加载之前,在控制器中设置Model.CampaignType的值。所有这一切都很好。如果Exclusive是在DB中保存的内容,那么我们将在HTML中呈现:

<input checked="checked" id="CampaignType" name="CampaignType" type="radio" value="Exclusive"><label>Exclusive</label>
<input id="CampaignType" name="CampaignType" type="radio" value="Shared"><label>Shared</label>

到目前为止,一切都很顺利。

但是,在按钮的onclick()事件中,如果我这样做:

var values = 
    {
        "CampaignType": $('#CampaignType').val()
    }
alert(values.CampaignType);

即使我已将选择更改为“共享”,警报也始终显示为“独占”。

我需要做什么才能values.CampaignType反映页面上选择的内容,而不是页面加载时设置的内容?

1 个答案:

答案 0 :(得分:3)

所以你可以从这些开始:

  1. 删除无效的id s - CSS中的多个id 无效。要获取已选中单选按钮的值,您可以使用:

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

    $('input[type=radio]:checked').val()
    
  2. 要使label正常工作,您必须使用for属性链接与相应的单选按钮。

  3. 见下面的演示:

    &#13;
    &#13;
    function submit() {
      var values = {
        "CampaignType": $('input[name=CampaignType]:checked').val()
      }
      console.log(values.CampaignType);
    }
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <input checked="checked" id="CampaignType1" name="CampaignType" type="radio" value="Exclusive">
    <label for="CampaignType1">Exclusive</label>
    <input id="CampaignType2" name="CampaignType" type="radio" value="Shared">
    <label for="CampaignType2">Shared</label>
    <br/>
    <button onclick="submit()">click here</button>
    &#13;
    &#13;
    &#13;

    一切顺利!