在javascript中启用禁用的CheckBoxList - 在回发后检查的项目无法识别

时间:2012-05-16 10:48:39

标签: javascript asp.net checkboxlist

我有一个CheckBoxList可以加载为禁用,但可能需要在一些客户端操作后启用。

我能够使用jQuery启用复选框,但问题是在提交页面后,ChceckBoxList中的选定项目无法识别(可能是因为控件不在ViewState中)。

该方案的一个简单示例:

<asp:CheckBoxList ID="chkList1" runat="server" Enabled="false" ClientIDMode="Static">
       <asp:ListItem Value="123" />
       <asp:ListItem Value="456" />
       <asp:ListItem Value="789" />
</asp:CheckBoxList>

$(document).ready(function()
{
    $("#divEnable").click(function()
    {
        var inputs = $("#chkList1").find("input");
        for (var i = 0; i < inputs.length; i++)
        {
            inputs[i].disabled = false;
        }
    });
}

然后在启用复选框后,选择它们并发送回发 - 不识别所选项目。

我尝试“手动”禁用这些项目,如

chkList1.Items[0].Attributes.Add("disabled", "disabled");

但是这不起作用(disabled属性附加到包含的span而不是输入控件。)

我还考虑使用隐藏字段来跟踪复选框选择,但由于我在网格中有多个CheckBoxLists,因此非常不优雅。

有什么方法吗?

3 个答案:

答案 0 :(得分:1)

试试这个:

$(document).ready(function()
{
    $("#divEnable").click(function()
    {
        var inputs = $("#chkList1").find("input")
            .each(function(){
                            //if($(this).is(":disabled"))
                            //{
                               $(this).prop("disabled",true);
                            //}
                          });      
});

价:
jQuery asp control .prop(“disabled”, “”) not enabling check box in IE 9
Unable to handle disable check box

答案 1 :(得分:0)

您可以使用此

  for (i = 0; i < document.forms[0].length; i++)
   {
      e = document.forms[0].elements[i];
      if (e.id.indexOf("chklist") != -1)
      {
           e.disabled = false;
      }
  }

答案 2 :(得分:0)

我有同样的问题。我修复此问题的方法是启用checkboxlist,然后在加载页面时禁用脚本。这样控件进入了viewstate,但仍然被禁用启动。

    var checkBoxListToChange = document.getElementById('');
    var checkboxes = checkBoxListToChange.getElementsByTagName("input");
    for (var x = 0; x < checkboxes.length; x++) {
        checkboxes[x].disabled = true;
    }