在视图中,我有两个单选按钮:
@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
反映页面上选择的内容,而不是页面加载时设置的内容?
答案 0 :(得分:3)
所以你可以从这些开始:
删除无效的id
s - CSS中的多个id
无效。要获取已选中单选按钮的值,您可以使用:
$('input[name=CampaignType]:checked').val()
或
$('input[type=radio]:checked').val()
要使label
正常工作,您必须使用for
属性链接与相应的单选按钮。
见下面的演示:
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;
一切顺利!