【问题标题】:the :disabled attribute on my button does not seem to work我的按钮上的 :disabled 属性似乎不起作用
【发布时间】:2018-05-03 22:18:34
【问题描述】:

我在禁用按钮的样式方面遇到问题。
启用的按钮有效,悬停有效,但禁用的按钮恢复为默认值?风格:

CSS:

.smlbutton:enabled{
    color: #fff;
    background-color: #1d60ff;
    height: 20px;
    width: 18px;
    padding: 0px;
    border: none 0px transparent;
    font-size: 7px;
    font-weight: lighter;
    webkit-border-radius: 20px 10px 10px 10px;
    -moz-border-radius: 9px 10px 10px 10px;
    border-radius: 5px 20px 20px 20px;
}

.smlbutton:hover{
    color: #fff;
    background-color: #1d60ff;
    height: 22px;
    width: 18px;
    padding: 0px;
    border: none 0px transparent;
    font-size: 7px;
    font-weight: lighter;
    webkit-border-radius: 20px 10px 10px 10px;
    -moz-border-radius: 9px 10px 10px 10px;
    border-radius: 5px 20px 20px 20px;
}
 .smlbutton:disabled,.smlbutton.disabled{
    color: #fff;
    background-color: #1d60ff;
    height: 200px;
    width: 18px;
    padding: 0px;
    border: none 0px transparent;
    font-size: 7px;
    font-weight: lighter;
    webkit-border-radius: 20px 10px 10px 10px;
    -moz-border-radius: 9px 10px 10px 10px;
    border-radius: 5px 20px 20px 20px;

ASPX:

<asp:TemplateField HeaderText="Approval Drawings Approved" Visible="true">
                                <ItemTemplate>
                                    <asp:TextBox ID="tbApprovals" runat="server" Text='<%# Bind("Approvals", "{0:MM/dd/yy}") %>' AutoPostBack="true" Enabled="true" OnTextChanged="tbDate_OnTextChangeApprovals" Width="100px"></asp:TextBox>
                                    <ajaxToolkit:CalendarExtender ID="tbApprovals_CalendarExtender" runat="server" TargetControlID="tbApprovals" />
                                    <asp:Button ID="btnApprovalsConvertToBaseline" class="smlbutton" runat="server" Text="B." OnClick="btnApprovalsConvertToBaseline_Click" Enabled="FALSE" />
                                    <asp:Button ID="btnApprovalsCompleteTask" class="smlbutton" runat="server" Text="D." OnClick="btnApprovalsCompleteTask_Click" Enabled="FALSE" />
                                    <asp:Button ID="btnApprovalsCompleteTaskOnTime" class="smlbutton" runat="server" Text="DOT" OnClick="btnApprovalsCompleteTaskOnTime_Click" Enabled="FALSE" />
                                </ItemTemplate>
                            </asp:TemplateField>

我使用这个 c# 启用按钮

   try
    {
        TextBox tempApprovals = (TextBox)e.Row.Cells[9].FindControl("tbApprovals");
        DateTime myDateApprovals = DateTime.ParseExact(tempApprovals.Text.ToString(), "yyyy-MM-dd",
                                   System.Globalization.CultureInfo.InvariantCulture);

        if (myDateApprovals <= DateTime.Now.Date && e.Row.Cells[10].Text != "Actual")
        {
            tempApprovals.ForeColor = System.Drawing.Color.Red;
            tempApprovals.Font.Bold = true;
        }
        Button btnApprovals = (Button)e.Row.Cells[9].FindControl("btnApprovalsConvertToBaseline");
        Button btnApprovals2 = (Button)e.Row.Cells[9].FindControl("btnApprovalsCompleteTask");
        Button btnApprovals3 = (Button)e.Row.Cells[9].FindControl("btnApprovalsCompleteTaskOnTime");

        if (e.Row.Cells[10].Text.ToString() == "Forecast")
        {
            btnApprovals.Enabled = true;
        }

        if (e.Row.Cells[10].Text.ToString() == "Baseline")
        {
            btnApprovals.Enabled = false;
            btnApprovals2.Enabled = true;
            btnApprovals3.Enabled = true;
        }

        if (e.Row.Cells[10].Text.ToString() == "Adjusted")
        {
            btnApprovals.Enabled = false;
            btnApprovals2.Enabled = true;
            btnApprovals3.Enabled = true;
        }

        if (e.Row.Cells[10].Text.ToString() == "Actual")
        {
            btnApprovals2.Enabled = false;
            btnApprovals3.Enabled = false;
        }
    }
    catch { }

}

【问题讨论】:

标签: c# css asp.net button


【解决方案1】:

您不需要为每个伪类设置样式。相反,让从父级继承。

.smlbutton {
    color: #fff;
    background-color: #1d60ff;
    height: 22px;
    width: 18px;
    padding: 0px;
    border: none 0px transparent;
    font-size: 7px;
    font-weight: lighter;
    webkit-border-radius: 20px 10px 10px 10px;
    -moz-border-radius: 9px 10px 10px 10px;
    border-radius: 5px 20px 20px 20px;
}

    .smlbutton:disabled,
    .smlbutton[disabled] {
        background-color: #0f0;
    }

    .smlbutton:hover {
        background-color: #f00;
    }

【讨论】:

  • 我通过检查浏览器中的按钮进行了检查,被禁用的控件正在使用这个 css class="aspNetDisabled" 我没有在任何地方设置这个类
  • 感谢您提供有关继承父信息的提示
  • aspNetDisabled 由 ASP.NET 控件自动添加,当您制作按钮控件Enable=false 时。我通常使用aspNetDisabled 类来设置禁用按钮的样式而不是:disabled
  • 但是如果你有多个按钮样式,他们不都得到 aspNetDisabled 样式吗?
  • 你当然可以有多种按钮样式,但是对于disabled按钮我们只是修改不透明度。例如.aspNetDisabled, .smlbutton.disabled, .smlbutton:disabled, .smlbutton[disabled] { opacity: .65; }
猜你喜欢
  • 2019-08-28
  • 2011-06-08
  • 2010-10-08
  • 1970-01-01
  • 2017-11-17
  • 2010-11-16
  • 2015-10-05
  • 1970-01-01
  • 2010-12-08
相关资源
最近更新 更多