0

我正在处理 C# MVC 4 项目,并且在确定是否使用 jquery 选中复选框时遇到问题。基本上,我需要根据复选框的值显示和隐藏页面上的其他控件。这是复选框的cshtml代码:

     @if (Model.SkuCustomizations[i].hasStoneChange)
     {
        <div class="two-col-label">@Html.DisplayNameFor(m => m.SkuCustomizations[i].Stone_HasChange)</div>
        <div id="divStoneChange" data-idx="@i" class="two-col-value">
            <input type="checkbox" id="chkStone_@i" name="stoneChange" checked="@Model.SkuCustomizations[i].Stone_HasChange">
        </div>
       <div class="last" />
     }

这是尝试提取检查值的代码:

$('#divStoneChange').change(function () {
    var idx = $('#divStoneChange').attr('data-idx')
    var stone = $('#chkStone' + idx).is(':checked')
    if (stone != false)
    {
        $("#divVendorCost").show();
    }
    else
    {
        var type = $('#ddMetalType' + idx).val();
        var mount = $('#chkMount' + idx).is(':checked')
        var subcat = $('#ddSubCat' + idx).val();
        if (mount != true && (subcat == "Whole Set" || subcat == "" || subcat == "-- Select --" || subcat == undefined) && (type == "-- Not Customized --" || type == "" || type == undefined))
        {
            $("#divVendorCost").hide();
        }
    }
});

$('#chkStone' + idx).is(':checked')无论复选框的值如何,始终返回 false。有人可以指出我做错了什么吗?

谢谢

4

2 回答 2

2

_您在选择器中错过了那里

var stone = $('#chkStone_' + idx).is(':checked');
           //-----------^---here;

尝试这个,

  ...
  var idx = $('#divStoneChange').attr('data-idx');
  if ($('#chkStone_' + idx).is(':checked'))
  {
    $("#divVendorCost").show();
  }
  else
  {
    var type = $('#ddMetalType' + idx).val();
    var mount = $('#chkMount' + idx).is(':checked')
    var subcat = $('#ddSubCat' + idx).val();
    if (mount != true && (subcat == "Whole Set" || subcat == "" || subcat == "-- Select --" || subcat == undefined) && (type == "-- Not Customized --" || type == "" || type == undefined))
    {
        $("#divVendorCost").hide();
    }
  }
  ..
于 2013-05-04T17:05:07.163 回答
1

尝试这个:

var stone = $('#chkStone_' + idx).is(':checked');

因为,你的data-idx价值是"@i"id价值是"chkStone_@i",所以你需要_在 id 选择中添加一个。

于 2013-05-04T17:01:45.720 回答