禁用4小时提交按钮

问题描述:

我已经构建了一个ASP.Net MVC 5应用程序。在其中一个Razor视图中,我有一个提交按钮,用户可以点击发送电子邮件和短信。但是,当用户单击“提交”按钮时,消息可能需要10或15秒才能发出。由于时间延迟,用户有时多次点击提交按钮,认为第一次点击提交按钮不起作用。即使向用户显示警告信息,也不要单击提交按钮多次,他们仍然这样做。禁用4小时提交按钮

我现在想禁用4小时的提交按钮。我能够禁止使用一些JQuery的

$('#myButton').prop('disabled', true); 

然而,这是没有多大帮助的提交按钮,因为如果用户再次访问该页面或刷新,该按钮可以再次点击。相反,我想要的是提交按钮从最初点击4小时后被禁用。

我真的不知道什么是最好的方式来做到这一点。我知道我可以在数据库中存储按钮被点击的日期时间并进行验证,但我不确定这是否是最好的方法。也许可以使用会话变量?

有没有人遇到过这样的情景?任何建议将不胜感激。

谢谢。

+3

一个客户端的页不会(且不应)具有4小时的寿命。要做到这一点,最好在按钮再次可用时(无论是在localStorage中,还是在会话中或服务器端数据存储中)存储时间戳,然后检查客户端是否定期通过该日期。 –

+0

你的按钮是一个服务器控件,就像''?如果是这样的话,当页面加载到控件的Page_Init方法中,4小时没有过去时,您可以实现逻辑来禁用按钮,并且像现在一样立即通过jQuery禁用它。 – Zack

+0

@Zack它是一个MVC应用程序,所以没有服务器控件。 – tgriffiths

下面是禁用按钮3秒的示例。

$('#enter').on('click',function(){ 
 
    document.getElementById("enter").disabled=true; 
 
    setInterval(function(){document.getElementById("enter").disabled=false;},3000); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<button id='enter'>Try it</button>

+0

4小时发生了什么? – Zack

+0

我期待他能够把时间改变成他想要的任何东西,3秒用于测试目的,看看他是否想要,而不是用4小时测试(144000000) – depperm

+1

如果用户从不改变页面,但OP明确询问如何处理这是一种有状态的方式,以及如何最好地做到这一点 – thorkia