繁体   English   中英

禁用asp.net按钮的回发

[英]Disable the postback of asp.net button

我的想法是,当用户没有进入他将无法将商品添加到购物车时,所以我做的是这样的:

<asp:Button ID="BTNAddToCart" runat="server" Text="Add to cart" class="btn btn-info btn-lg" style="display: inline; margin: auto; display: block; visibility: hidden;"  OnClick="BTNAddToCart_Click" /> 

然后是代码背后:

if (Session["User"] == null)
{
    BTNAddToCart.Attributes["class"] = "btn btn-info btn-lg disabled";
    BTNAddToCart.Attributes.Add("title", "Error");  
    BTNAddToCart.Attributes.Add("data-toggle", "popover");
    BTNAddToCart.Attributes.Add("data-trigger", "hover");
    BTNAddToCart.Attributes.Add("data-placement", "bottom");
    BTNAddToCart.Attributes.Add("data-content", "You must be loged in to add items to the cart");  
}

正如你所看到的,通过使用Bootstrap,我给了按钮一个他无法点击的外观,但实际上他仍然是可点击的。

所以我认为,如果我将禁用按钮回发它将真的不可点击。

如何禁用按钮回发?

我试过了:

<asp:Button ID="BTNAddToCart" runat="server" Text="Add to cart" class="btn btn-info btn-lg" style="display: inline; margin: auto; display: block; visibility: hidden;" OnClientClick="BTNJavaScriptClick()" OnClick="BTNAddToCart_Click" />



<script>  

function BTNJavaScriptClick()
{
    var ButtonAdd = document.getElementById("BTNAddToCart");
    if (ButtonAdd.className == "btn btn-info btn-lg disabled") 
        return false;
}

 </script>   

我甚至试过BTNAddToCart.Enabled = false; 它工作但它使我的popover disapper。

您可以简单地将Enable asp.net属性设置为false,该按钮不会回发。

BTNAddToCart.Enabled = false;

当元素被disabled您可以使用css上的disabled样式为其提供所需的外观。 这是一个简单的例子:

input:disabled {
    background: #444;
}

相对于: 仅使用css设置禁用输入的样式

如果您希望按钮在鼠标悬停时做出反应(例如显示工具提示),而在单击时不触发回发,则可以:

  • 保持按钮启用
  • 使用BootStrap样式将按钮显示为已禁用
  • 通过在OnClientClick返回false来防止回发
  • 防止按钮获得焦点

代码如下所示:

if (Session["User"] == null)
{
    BTNAddToCart.CssClass = "btn btn-info btn-lg disabled";
    BTNAddToCart.OnClientClick = "return false;";
    BTNAddToCart.Attributes.Add("onfocus", "this.blur();");
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM