簡體   English   中英

多次點擊按鈕動作

[英]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 = falsedisplay: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM