多次单击按钮操作

时间:2014-05-06 15:20:06

标签: asp.net vb.net

当我点击按钮时,操作将转到服务器。没关系。但是当我点击这个按钮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>

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在您的代码中使用与javascript相同的逻辑,但限制它。设置一个加载并设置为&#39; 0&#39;的变量。页面加载时变量值更改后,不再允许执行操作。

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