0

我有一个 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属性附加到包含跨度而不是输入控件)。

我还考虑使用隐藏字段来跟踪复选框的选择,但由于我在一个网格中有多个 CheckBoxList,这将是非常不雅的。

有没有办法解决?

4

3 回答 3

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 enable check box in IE 9
Unable to handle disable check box

于 2012-05-16T11:04:32.607 回答
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;
      }
  }
于 2012-05-16T11:14:12.800 回答
0

我遇到过同样的问题。我解决此问题的方法是启用复选框列表,然后在加载页面时禁用使用脚本。这样控件就进入了视图状态,但仍然无法启动。

    var checkBoxListToChange = document.getElementById('');
    var checkboxes = checkBoxListToChange.getElementsByTagName("input");
    for (var x = 0; x < checkboxes.length; x++) {
        checkboxes[x].disabled = true;
    }
于 2015-09-15T13:52:21.840 回答