在MVC中,我可以定义一组单选按钮:
@Html.RadioButtonFor(x => x.hasAcceptedAgreement, true) Yes
@Html.RadioButtonFor(x => x.hasAcceptedAgreement, false) No
呈现
<input id="hasAcceptedAgreement" name="hasAcceptedAgreement" type="radio" value="True" /> Yes
<input id="hasAcceptedAgreement" name="hasAcceptedAgreement" type="radio" value="False" /> No
我想根据选择的项目禁用或启用div,我已经设法使用这个jQuery:
$(':radio[name=hasAcceptedAgreement]').change(function () {
if ($(this).val() == 'True') {
// display div
} else {
// hide div
}
});
但是当他们提交表单时,我还需要检查当前选择的值,然后再次显示/隐藏相应的部分(因为在POST时不会调用.change函数)。有没有办法可以实现这个目标?
如果我尝试做$(':radio [name = hasAcceptedAgreement]')。val(),它将始终评估为True,因为ids是相同的(我假设)。有没有其他方法可以获得价值,或者我是上河,因为MVC喜欢给每个id赋予相同的名称?
编辑:顺便说一句,我知道我可以在RadioButtonFor调用中手动设置ID - 我只是想知道是否有一些更容易的内置方法来处理它我不知道。答案 0 :(得分:8)
正如他们在这里所说:How can I get which radio is selected via jQuery?你可以使用:
$('input[name=hasAcceptedAgreement]:checked').val()
获取当前所选广播的值。
答案 1 :(得分:4)
我在我工作的项目中使用了下面的代码并且它有效!
$(':radio[name=hasAcceptedAgreement]').change(function () {
if ($('input[name=hasAcceptedAgreement]:checked').val() == 'True') {
// display div
} else {
// hide div
}
});
答案 2 :(得分:1)
$(function(){
// executed once the dom is loaded
// bind the change function as usual
$(':radio[name=hasAcceptedAgreement]').change(function () {
if ($(this).val() == 'True') {
// display div
} else {
// hide div
}
}).change(); // and immediately trigger it
});
更改处理程序的一个小改进(因此您不需要if / else块)
$("#yourdiv").toggle( $(this).val() == 'True' );