我有一个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,因此非常不优雅。
有什么方法吗?
答案 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;
}