[英]Button disable function after clicking on it
我有大約150頁的保存按鈕。 每當用戶單擊“保存”按鈕時,我應在單擊后禁用該按鈕。 這樣用戶就不會再次單擊保存按鈕。
protected void Button1_Click(object sender, EventArgs e)
{
// right now once the user clicks the save button
Button1.Enabled = "false"
}
現在我正在這樣做。 有沒有更好的解決方案,您可以為我提供改善編碼的方法,那就太好了。
謝謝
我認為實現此目標的最佳選擇是使用javascript。 如果您使用的是jQuery(我什至可以開始推薦足夠多的jQuery),則可以將javascript放在您的母版頁中。 您只需要找到一種為保存按鈕創建選擇器的方法。 像這樣:
$(document).ready(function(){
$('.saveButton').bind("click", function(e) {
$(this).attr("disabled", "true");
return true; //causes the client side script to run.
});
});
在此示例中,我假設所有保存按鈕都具有css類“ .saveButton”,但是您可以找到自己的選擇按鈕的方法。
干杯!
您也可以嘗試通過Javascript禁用它。
單擊鏈接后,您需要使用JavaScript更改鏈接,以防止將來進行點擊處理,然后再允許頁面進行回發。 天真的嘗試是
<asp:LinkButton runat="server" id="button" OnClientClick="this.href='#'">
Click - doesn't quite work
</asp>
這樣可以成功防止連續的點擊觸發回發,但也可以防止首次點擊觸發回發。 需要更多邏輯才能使其正常工作。 在后面的代碼中,我獲取了實際的回發JavaScript代碼段,並將其工作成某種邏輯。
protected void Page_PreRender(object sender, EventArgs e)
{
button1.OnClientClick = string.Format(
"if(this.getAttribute('disabled')) return false; {0}; this.setAttribute('disabled','disabled'); return false;",
Page.ClientScript.GetPostBackEventReference(button1, null));
}
在HTML模板中:
<asp:LinkButton runat="server" id="button" >
Click - does not allow multiple postbacks
</asp>
您可以使用一些CSS來簡化這一點,到那時我建議您包括jQuery,這樣您的代碼就更加簡潔(由於其命令鏈)。
您要做的是使用一些JavaScript,並在客戶端單擊它時將其禁用。
該Click事件在回發時觸發。
在用戶單擊后附加javascript以禁用按鈕的最簡單方法是(在頁面onLoad事件中):
myButton.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(btnSave, null) + ";");
但是,如果在許多頁面上重復執行按鈕,則可以創建嵌套的母版頁並在其中放置保存按鈕,或者從實現此禁用功能的類繼承您的頁面。 另外,單擊后您可以“掃描”要禁用的控件!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.