我的想法是,如果用户没有能够将商品添加到购物车中,那么我所做的就是这样:
<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消失了。
答案 0 :(得分:3)
您可以简单地将启用 asp.net属性设置为false,该按钮不会回发。
BTNAddToCart.Enabled = false;
当元素为disabled
时,您可以在css上使用disabled
样式为其提供所需的外观。这是一个简单的例子:
input:disabled {
background: #444;
}
答案 1 :(得分:1)
如果您希望按钮在鼠标悬停时做出反应(例如显示工具提示),而在点击时不触发回发,则可以:
false
OnClientClick
来阻止回发
代码如下所示:
if (Session["User"] == null)
{
BTNAddToCart.CssClass = "btn btn-info btn-lg disabled";
BTNAddToCart.OnClientClick = "return false;";
BTNAddToCart.Attributes.Add("onfocus", "this.blur();");
...
}