2014-05-06 135 views
0

當我點擊按鈕時,動作進入服務器。沒關係。但是當我點擊這個按鈕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> 
+0

那麼你需要按鈕來插入數據一次,而不是更多? –

+0

是的。即使我在按鈕中單擊多次,我也只需要一次請求去服務器。 – guinatal

+0

在按鈕點擊事件中,試着把'btn.Enable = false' –

回答

0

裏面你btn_Click方法,你可以設定在執行結束的btn.Enable=false像@矮胖子評論

,並讓這個更安全,你可以使用又一個JavaScript代碼,如:

function setDisable(el){ 
el.setAttribute('disabled', 'disabled'); 
} 

和ONT的元素:

<asp:button id="btn" runat="server" text="Click" onclientclick="setDisable(this);"></asp:button> 

沒有嘗試過的代碼,但我認爲你擦肩而過的想法;-)

編輯: 另一種方法是科幻它不是一個問題,你可以在元素上設置display:none防止第二次的點擊,所以當第一次點擊的回發行結束後,按鈕再次可見轉...

,如果用戶必須點擊一次,沒有更多的,那麼你可以使用頂端的上方和服務器到該按鈕上設置留enabled = falsedisplay:none

+0

我懂了@servergta。我試過了,但它不起作用。因爲如果我這樣做,按鈕的動作不會到服務器。即使我把「迴歸真實」也沒有。你可以在這裏檢查相同的問題:[http://stackoverflow.com/questions/6137172/how-do-i-prevent-users-clicking-a-button-twice](http://stackoverflow.com/questions/ 6137172 /怎麼辦-I-防止用戶單擊-A-按鈕兩次) – guinatal

0

在你的代碼,只需使用你的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