首页 > 解决方案 > 检查单选按钮时禁用下拉列表?

问题描述

我的网络表单有 2 个控件,drpBloodType 和 rbUnknownBloodType

每当检查按钮时,我都需要禁用列表。我试过了:

protected void rbUnknownBloodType_CheckedChanged(object sender, EventArgs e)
{
    drpBloodType.Enabled = false;
}

<script>
   $(function () {
      $('#rbUnknownBloodType').change(function () {
         if ($(this).is(':checked')) {
         $('#drpBloodType').attr('disabled', 'disabled');
         } else {
         $('#drpBloodType').removeAttr('disabled');
         }
      });
   });
</script>

但都没有奏效。

标签: c#asp.netvisual-studio

解决方案


如果您有以下 aspx 标记,则可以在代码隐藏中执行以下操作。注意AutoPostBack="true"CheckBox 上的使用。

<asp:DropDownList ID="BloodType" runat="server">
    <asp:ListItem Text="Select..." Value=""></asp:ListItem>
    <asp:ListItem Text="A+" Value="A+"></asp:ListItem>
    <asp:ListItem Text="A-" Value="A-"></asp:ListItem>
    <asp:ListItem Text="B+" Value="B+"></asp:ListItem>
    <asp:ListItem Text="B-" Value="B-"></asp:ListItem>
    <asp:ListItem Text="O+" Value="O+"></asp:ListItem>
    <asp:ListItem Text="O-" Value="O-"></asp:ListItem>
    <asp:ListItem Text="AB+" Value="AB+"></asp:ListItem>
    <asp:ListItem Text="AB-" Value="AB-"></asp:ListItem>
</asp:DropDownList>

<asp:CheckBox ID="UnknownBloodType" OnCheckedChanged="UnknownBloodType_CheckedChanged" 
  runat="server" AutoPostBack="true" />

后面的代码。

protected void UnknownBloodType_CheckedChanged(object sender, EventArgs e)
{
    //set the dll to default
    BloodType.SelectedValue = "";

    //cast the sender back to a checkbox and disable the dll based on it's checked status
    BloodType.Enabled = !((CheckBox)sender).Checked;
}

或 jquery 解决方案。这会保存一个 PostBack,但它会在 PostBack 之后失去禁用状态。%= UnknownBloodType.ClientID %>仅适用于 aspx 页面本身。如果您不想使用它,请查看ClientIdMode=Static

<script>
    $(function () {
        $('#<%= UnknownBloodType.ClientID %>').change(function () {
            var dll = $('#<%= BloodType.ClientID %>');
            if ($(this).is(':checked')) {
                dll.val('');
                dll.attr('disabled', 'disabled');
            } else {
                dll.removeAttr('disabled');
            }
        });
    });
</script>

推荐阅读