MVC中的复选框的jquery代码

时间:2013-08-21 17:57:31

标签: jquery asp.net-mvc

这个jQuery函数总是在alert(isChecked)中返回true,即使未经检查也是如此:
     请注意.accrualCheckbox是Div的类名,而不是为复选框设置的类。我删除了代码if($(this).prop('checked','checked')),现在它总是返回'false'

$('.accrualCheckbox').click(function () {
    var isChecked = $(this).attr('checked') ? true : false;
    alert($(this).attr('checked'));
    alert(isChecked);
    if ($(this).prop('checked', 'checked')) {
        var parentDiv = $(this).parents('.searchLine');
        $(parentDiv).css('border', '1px solid red');

        //Checkbox
        $(parentDiv).find("input[type=text]").each(function () {
            $(this).val('B');
            $(this).prop('disabled', true);
        });
    }
});
});

我保留了div中的复选框:

<div class="accrualCheckbox">
    @Html.CheckBox("chkSalesAndMarketing")
</div>   

2 个答案:

答案 0 :(得分:3)

您需要使用prop()代替attr(),或者您也可以:

var isChecked = $(this).is(':checked');

但是这个if ($(this).prop('checked', 'checked'))将始终返回true,因为您在条件中将值设置为checked

<强>更新 我认为这就是你想要做的事情:

$('.accrualCheckbox :checkbox').click(function () {
    if ($(this).is(':checked')) {  // or $(this).prop('checked');
        var parentDiv = $(this).closest('.searchLine');
        $(parentDiv).css('border', '1px solid red');
        //Checkbox
        $(parentDiv).find(":text").each(function () {
            $(this).val('B');
            $(this).prop('disabled', true);
        });
    }
});

答案 1 :(得分:1)

使用$(this).prop('checked')代替attr()

请参阅此处的属性与属性部分:http://api.jquery.com/prop/