无法使用Jquery获取@ Html.RadioButtonFor的值,checked属性不会更改

时间:2016-05-18 12:38:00

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

使用MVC 5,我在Razor视图上有一个布尔属性的单选按钮,一个简单的是或否选择,如下所示:

<td class="warning">@Html.LabelFor(model => model.HeartCondition)</td>
<td class="info">Yes @Html.RadioButtonFor(model => model.HeartCondition, true, new { @class = "radio" })</td>
<td class="info">No @Html.RadioButtonFor(model => model.HeartCondition, false, new { @class = "radio"})</td>

<a role="button" class="btn btn-primary btnnav" id="SaveParQ">Save & Next</a>

当我向视图传递true或false值时,会选择相应的单选按钮,并选中=&#34;选中&#34;属性。然后我想保存值,而不必重新加载页面,我试图用jquery做,这就是问题所在。如果我将真实值传递给视图,那么&#34;是&#34;单选按钮被选中并具有checked属性,但是当我单击&#34; no&#34;单选按钮,&#34; no&#34;按钮确实被选中,但被检查的属性仍然在&#34;是&#34;按钮,并且不会更改为&#34; no&#34;按钮,这是我认为它会完成的。

我的jquery看起来像这样:

//Save ParQ
$("body").on("click", "#SaveParQ", function (e) {
    preventDefaultAction(e);
    var url = GetUrlPath() + "/PreAssessment/SaveParQ";
    var parQId = $("#ParQId").val();
    var heartCondition = false;
    if ($("input[name='heartCondition']:checked").val()) {
        heartCondition = true;
    }

    var viewModel = new ParQViewModel(parQId, heartCondition);
    $.ajax({
        type: "POST",
        cache: false,
        url: url,
        data: JSON.stringify(viewModel),
        contentType: 'application/json; charset=utf-8',
        success: function (result) {
            if (result.success === true) {
                showFullScreenLoadMask(false);
                $("#ParQId").val(result.ParQId);
            }
        },
        error: function (responseText, textStatus, errorThrown) {
            alert('Error - ' + errorThrown);
        }
    });
});

我不确定我的jquery是否正确,但如果是的话,它并没有注册我改变&#34;是&#34; to&#34; no&#34;,因为checked属性保留在原始元素上。任何人都可以帮助我找到正确的方法吗?

1 个答案:

答案 0 :(得分:2)

删除以下代码行

var heartCondition = false;
if ($("input[name='heartCondition']:checked").val()) {
    heartCondition = true;
}

并替换为

var heartCondition = $("input[name='HeartCondition']:checked").val();

会根据所选的单选按钮将值设置为truefalse