我正在开发一个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。有人可以指出我做错了吗?
由于
答案 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选择中添加_
。