如何在回发时保留禁用的复选框

How do I retain disabled checkboxes upon postback?

本文关键字:复选框 保留      更新时间:2023-09-26

我有一组javascript代码,它允许我根据我的选择禁用/启用复选框。

下面的第一组代码允许我将默认值设置为"Select All",并在第一个页面加载期间选中"Select All"时禁用其余部分,而不是在回发时。如果用户在checkboxlist2中没有选中任何复选框,我想提示用户在checkboxlist2中选择至少一个复选框,但不想在checkboxlist1和checkboxlist2中使用默认的"select All"覆盖用户先前在回发时的选择。

$(function () {
    if($("#hidden").val() == "")
    {
        $("#Checkboxlist1 :checkbox").attr('disabled', 'disabled');
        $("#Checkboxlist1 :checkbox[value='Select All']").removeAttr('disabled');
        $("#Checkboxlist1 :checkbox[value='Select All']").prop("checked", true);
        $("#Checkboxlist2 :checkbox").attr('disabled', 'disabled');
        $("#Checkboxlist2 :checkbox[value='Select All']").removeAttr('disabled');
        $("#Checkboxlist2 :checkbox[value='Select All']").prop("checked", true);
        $("#hidden").val("set");
    }
});
$(function () {
    $("#Checkboxlist2 :checkbox").change(function () {
            var ischecked = $(this).is(":checked");
            var val = $(this).val();
            //alert(val);
            if (val == "Select All") {
                if (ischecked) {
                    $("#Checkboxlist2 :checkbox").attr('disabled', 'disabled');
                    $(this).removeAttr('disabled');
                    $("#Checkboxlist2  :checkbox").prop("checked", false);
                    $(this).prop("checked", true);
                    return;
                } else {
                    $("#Checkboxlist2  :checkbox").removeAttr('disabled');
                    return;
我的问题是:

在回发时,我的检查值保留,但之前禁用的复选框是启用的,所以我如何在回发时保留其整个状态?

我启用了复选框列表enableviewstate = true

我不确定您在何处将$("#hidden")此值设置为空。但是,如果您的checkbox更改事件旨在设置所有checkbox disabled状态正确,只需在该事件处理程序之后调用change事件上的trigger方法。像这样。

$("#Checkboxlist2 :checkbox").trigger('change');
这样的

$("#Checkboxlist2 :checkbox").change(function () {
var ischecked = $(this).is(":checked");
var val = $(this).val();
//alert(val);
  if (val == "Select All") {
    if (ischecked) {
        $("#Checkboxlist2 :checkbox").attr('disabled', 'disabled');
        $(this).removeAttr('disabled');
        $("#Checkboxlist2  :checkbox").prop("checked", false);
        $(this).prop("checked", true);
        return;
    } else {
        $("#Checkboxlist2  :checkbox").removeAttr('disabled');
        return;
    }
  }
});
$("#Checkboxlist2 :checkbox").trigger('change');

试着在文档中放一个标志。它可能会工作