Javascript 如果用户中断重定向到新页面,Disabled submit按钮将保持禁用状态
我想在使用javascript按下submit按钮后禁用它 myForm.onsubmit=函数(){ ... mySubmitButton.disabled=true; ... } 但当用户在当前页面仍处于活动状态时停止打开新页面时,按钮仍处于禁用状态 如果来自服务器的内容是文件,则会出现相同的结果(在这种情况下,不会重定向到新页面)Javascript 如果用户中断重定向到新页面,Disabled submit按钮将保持禁用状态,javascript,html,double-submit-prevention,Javascript,Html,Double Submit Prevention,我想在使用javascript按下submit按钮后禁用它 myForm.onsubmit=函数(){ ... mySubmitButton.disabled=true; ... } 但当用户在当前页面仍处于活动状态时停止打开新页面时,按钮仍处于禁用状态 如果来自服务器的内容是文件,则会出现相同的结果(在这种情况下,不会重定向到新页面) 有没有办法确定浏览器是否不再“希望”加载新的URL并重新启用mySubmitButton?我认为可以使用setTimeout调用一个函数来重新启用按钮。超时必须
有没有办法确定浏览器是否不再“希望”加载新的URL并重新启用mySubmitButton?我认为可以使用setTimeout调用一个函数来重新启用按钮。超时必须是一个合理的值,如5000(5s)。我不记得setTimeout/Interval调用是否在页面重定向后执行,因此,请先测试它。如果您确实需要在客户端执行所有操作,则有几种方法可以做到这一点:
我相信还有更多的解决办法。我希望这三个问题能给你一个解决问题的方法。这似乎有点矛盾。如果要禁用“提交”按钮以防止重新提交,则这是所需的行为。如果用户在发送任何内容之前停止页面,但处理已开始,则再次提交表单将再次启动该处理。类似地,如果文件是这样处理的结果,再次获取该文件将需要再次提交表单。我认为禁用提交按钮可以解决重新提交问题,但始终禁用按钮看起来有点奇怪。如果我们想显示“请稍候”消息,则会一直出现此消息,让用户感到困惑。确定用户在按下提交按钮后仍停留在当前页面上的情况并不坏。这是不可能的。如果您需要避免重复提交,那么您应该在服务器端执行此操作。我已经为IE找到了解决此问题的方法。它是定期检查document.readyState!='complete”(应在onbeforeunload之后启动)。对于其他浏览器,似乎没有任何可能的解决方案。我试着用window.onabort,但它在Chrome中不着火。如果没有任何解决方案,这意味着在页面重定向期间阻止表单或显示任何“请稍候”消息是不正确的,因为在这种情况下,我们会得到一个丑陋的界面。您可以尝试发出AJAX请求,检查服务器是否真的收到了数据。