为什么复选框无法使用JQuery

时间:2018-04-10 21:46:29

标签: jquery asp.net-mvc

我在视图中有3个复选框。当选中其中任何一个时,我想将3添加到名为cost的javascript变量的值中。如果取消选中其中任何一个复选框,我想从3的值中减去cost

目前,当选中或取消选中复选框时,我的代码总是会减去3。如果选中复选框,如何添加3

HTML

<div class="panel-heading">Checkboxes</div>
<div id="chkbox" class="panel-body">
    <div>
        @Html.CheckBoxFor(m => m.IsT)
        @Html.LabelFor(m => m.IsT, "T")
    </div>
    <div>
        @Html.CheckBoxFor(m => m.IsS)
        @Html.LabelFor(m => m.IsS, "S")
    </div>
    <div>
        @Html.CheckBoxFor(m => m.IsR)
        @Html.LabelFor(m => m.IsR, "R")
    </div>              
</div>

的jQuery

var cost = @Session["Cost"];
$('#chkbox').change(function (chk) {
    debugger;               
    if ($(chk).prop("checked")){
        cost = cost + 3;
    } else {
        cost = cost- 3;
    }
    $("#product").val(cost);
    $("#spProduct").text(cost);
});

1 个答案:

答案 0 :(得分:0)

<div>的元素是$('#chkbox').change(function (chk) { if ($(chk).prop("checked")){ ,而不是复选框。当你使用

chk

checked是事件,而不是元素(并且事件没有@Html.CheckBoxFor(m => m.IsT, new { @class = "mycheckbox" }) @Html.CheckBoxFor(m => m.IsS, new { @class = "mycheckbox" }) .... 属性。)

为您的复选框添加一个类名,并将其用作选择器

$('.mycheckbox').change(function () {
    if ($(this).is(':checked')) {
        ....
    } else {
        ....
    }

然后脚本变为

{{1}}