使用jQuery获取当前选中的单选按钮值

时间:2011-05-27 16:50:51

标签: jquery asp.net-mvc

在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 - 我只是想知道是否有一些更容易的内置方法来处理它我不知道。

3 个答案:

答案 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' );