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