JQuery总是为复选框值返回false

时间:2013-05-04 16:59:42

标签: jquery asp.net-mvc-4 checkbox

我正在开发一个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。有人可以指出我做错了吗?

由于

2 个答案:

答案 0 :(得分: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();
    }
  }
  ..

答案 1 :(得分:1)

试试这个:

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

因为,您的data-idx值为"@i" id值为"chkStone_@i",因此您还需要在ID选择中添加_