簡體   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