【问题标题】:How to enable/disable many controls together?如何同时启用/禁用多个控件?
【发布时间】:2011-08-02 07:12:07
【问题描述】:

我有很多 checkBoxes HTML 控件在服务器上运行,我想一起禁用和启用它们。 我尝试在 ASP.Net 面板中设置它们并将面板设置为禁用,但它们保持启用状态。

有什么想法吗?

代码

<asp:Panel runat="server" ID="PrivilegesCheckList" >
    <input id="adminPrivilegeCheckBox" type="checkbox" runat="server" />
    <asp:Literal ID="Literal1" runat="server" Text="<%$ Resources:Resource, itemAdminPrivilege%>" />
    <br />
    <input id="accountPrivilegeCheckBox" type="checkbox" runat="server" clientidmode="Static" />
    <asp:Literal ID="Literal2" runat="server" Text="<%$ Resources:Resource, itemAccountManagerPrivilege%>" />
    <br />
    <input id="employeePrivilegeCheckBox" type="checkbox" runat="server" clientidmode="Static" />
    <asp:Literal ID="Literal3" runat="server" Text="<%$ Resources:Resource, itemEmployeeManagerPrivilege%>" />
    <br />
    <input id="orgChartPrivilegeCheckBox" type="checkbox" runat="server" clientidmode="Static" />
    <asp:Literal ID="Literal4" runat="server" Text="<%$ Resources:Resource, itemOrgChartPrivilege%>" />
</asp:Panel>

【问题讨论】:

标签: asp.net panel


【解决方案1】:

使用 JavaScript 你可以做这样的事情:

var controls = document.getElementById("<%=panel1.ClientID%>").getElementsByTagName("input");

for (var i = 0; i < controls.length; i++)
     controls[i].disabled = true;

请注意,ASP.Net 为服务器端控件(此处为面板)生成动态 Id,它倾向于使用上面的 document.getElementById("")。

【讨论】:

  • 谢谢,但我会从服务器端这样做,不是吗?
  • 有可能,您可以为此编写一个自定义控件。但是你有没有理由不使用 asp:CheckBox 而不是你的复选框?
【解决方案2】:

将面板设置为禁用将适用于像 CheckBox 这样的 asp 控件,但不适用于带有 runat=server 的输入。此复选框已禁用,因为面板已启用=false:

<asp:Panel ID="Panel1" runat="server" Enabled="false" >
    <asp:CheckBox ID="CheckBox1" runat="server" /> 
</asp:Panel>

您也可以使用 jquery(客户端)轻松解决此问题:

$('#mypanelClientID input[type=checkbox]').attr('disabled', true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多