代码之家  ›  专栏  ›  技术社区  ›  Developer

需要一个javascript来启用或禁用复选框

  •  1
  • Developer  · 技术社区  · 14 年前

     <script type="text/javascript">
      function checkboxClick(checked, boxId) {
     var childCheckbox = document.getElementById(boxId);
     childCheckbox.disabled = !checked;
    
      if(childCheckbox.disabled) //uncheck when disabled
         childCheckbox.checked = false;
    }
    
    
    </script>
    
      <asp:CheckBox ID="CheckBox1" runat="server" OnClientClick ="checkboxClick(this.checked);" />
        <asp:CheckBox ID="boxId" runat="server" Enabled="false" /></div>
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   David Hedlund    14 年前

    基本上,你想要的是这样的:

    function checkboxClick(checked) {
       document.getElementById('childCheckbox').disabled = !checked;
    }
    
    <input type="checkbox" onclick="checkboxClick(this.checked);" />
    <input type="checkbox" id="childCheckbox" />
    

    现在,如果它们是ASP.NET控件, <asp:CheckBox /> ,您可能需要编辑 checkboxClick 这样它还需要复选框的clientID来启用/禁用。

    <asp:CheckBox runat="server" id="cb1" />
    <asp:CheckBox runat="server" id="cb2" />
    
    var cb2 = FindControl("cb2");
    ((CheckBox) FindControl("cb1")).OnClientClick = "checkboxClick(this.checked, '" + cb2.ClientID + "');";
    

    编辑

    根据意见满足进一步的要求:

    function checkboxClick(checked, boxId) {
       var childCheckbox = document.getElementById(boxId);
       childCheckbox.disabled = !checked;
    
       if(childCheckbox.disabled) //uncheck when disabled
          childCheckbox.checked = false;
    }
    
    <asp:CheckBox runat="server" id="cb1" />
    <asp:CheckBox runat="server" id="cb2" Enabled="false" /> <!-- disable on load -->