我有一个ASP.NET Web表单应用程序,其中一个页面用于提交订单。发生了什么事情是一些用户在点击提交时不会等待处理页面(有时需要几秒钟)并再次按下“提交”按钮。这导致重复订单的创建。
为了防止出现上述问题,我将以下代码添加到页面的Page_load中:
Submit.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(Submit, null) + ";");
现在发生的是页面上的所有验证都已中断。也就是说,当用户点击提交时,虽然某些必填字段为空,但是asp:requiredfieldvalidator的文本会短暂显示,但页面会被提交。
如何更改上述代码,以便所需的验证仍然有效?
答案 0 :(得分:0)
验证和回发代码由asp.net自动添加,如果您设置自己的onclick
,则不需要自己添加。
所以我认为通过以这种方式设置属性,您将在验证调用之前添加第二个回发调用。你应该只需要在代码隐藏中添加代码来禁用按钮:
Submit.Attributes.Add("onclick", " this.disabled = true; ");
或页面本身
<asp:Button OnClientClick="this.disabled = true;" />
答案 1 :(得分:0)
在html div元素中再添加一个按钮,并隐藏div可见性。当用户点击你的按钮时。只需在div中激活提交该按钮的事件。并使您的按钮禁用。它会工作试试
答案 2 :(得分:0)
此问题的另一个解决方案是将其放在Ajax更新面板中,并在0 ms延迟后显示进度指示器(微调器)。此解决方案不需要任何Javascript。