【问题标题】:How do I retain disabled checkboxes upon postback?如何在回发时保留禁用的复选框?
【发布时间】:2015-09-25 10:14:27
【问题描述】:

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

下面的第一组代码允许我将默认值设置为“全选”,并在第一个页面加载期间选中“全选”而不是在回发时禁用其余代码。在回发中不这样做的原因是因为例如,如果用户没有选中复选框列表 2 中的任何复选框,我想提示用户选择复选框列表 2 中的至少一个复选框,但不想覆盖之前的用户选择在回发时使用 checkboxlist1 和 checkboxlist2 中的默认“全选”。

$(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

【问题讨论】:

  • 你在使用更新面板吗??
  • 不,我没有使用更新面板

标签: javascript c# jquery asp.net checkbox


【解决方案1】:

我不确定你在哪里将$("#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');

【讨论】:

  • 就在事件处理程序之后?
【解决方案2】:

尝试在 document.ready 函数中添加一个标志..它可能会起作用

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多