[英]Multiple click button action
當我單擊按鈕時,操作將轉到服務器。 沒關系。 但是,當我單擊此按鈕2、3、4次或更多次時,它將轉到服務器並在數據庫中記錄多次。 有正確的方法嗎? 謝謝!
ASP:
<asp:button id="btn" runat="server" text="Click"></asp:button>
VB:
Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btn.Click
.... my function ...
End Sub
我找到了這個解決方案
<script language='javascript' type="text/javascript">
var clicks = 0;
function SubmitOnce(btn) {
clicks = clicks + 1;
if (clicks == 1) return true; else { btn.disabled = 'true'; return false; }
}
</script>
在btn_Click
方法內部,您可以在執行結束時設置btn.Enable=false
例如@ huMptyduMpty注釋
為了使其更安全,您可以使用如下JavaScript代碼:
function setDisable(el){
el.setAttribute('disabled', 'disabled');
}
並設置元素:
<asp:button id="btn" runat="server" text="Click" onclientclick="setDisable(this);"></asp:button>
還沒有嘗試過代碼,但是我想您已經明白了;-)
編輯:另一種方法是,這不是問題,您可以在元素上設置display:none
來防止第二次單擊,因此當第一次單擊的回發結束時,按鈕將再次變為可見...
並且如果用戶必須單擊一次且沒有更多單擊,則可以使用上面的提示並在服務器上設置為該按鈕,使其保持enabled = false
並display:none
在您的代碼中,只需使用與javascript相同的邏輯即可,但要對其進行限制。 設置一個變量,該變量將在頁面加載時加載並設置為“ 0”。 變量的值更改后,不再允許執行該操作。
Dim button_pressed as integer = 0
Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btn.Click
button_pressed +=1
if button_pressed = 1 then
' perform your action
else
' disallow the action
endif
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.