繁体   English   中英

禁用不带JavaScript的“提交”按钮

[英]Disable 'submit' button without javascript

我正在尝试实现某种解决方案,以解决当有一个提交按钮会触发需要花费一些时间才能运行的代码例程的提交按钮时发生的“双重提交”问题。

不幸的是,有大量用户仍在使用旧的Internet浏览器和一些运行无脚本插件。 我无法使用javascript。

单击asp.net中的按钮后,是否可以禁用按钮?

由于您要在用户单击后(并且页面仍在加载时)禁用按钮,因此必须在客户端进行。 JavaScript是您可以用于此的唯一客户端语言。

因此,请确保如果用户禁用了Javascript(如今极不可能),则您的最终页可以处理“两次提交”数据。

简短的故事,不。

在您的情况下,您需要制作一些服务器端代码以检测重复帖子,然后丢弃重复的请求。

您可以在每次单击按钮并将其置于会话后在服务器上启动计时器。 下次点击时,您可以检查计时器并应用或拒绝下次用户点击。

因此,如果没有某种客户端脚本,将不可能禁用该按钮。 如果您假定它将被禁用,那么无论它是哪种客户端脚本,那都是不可能的任务。

可以做的是确保他们要执行的操作不会在每次页面加载时重复运行。

  1. 加载页面时,创建一个隐藏字段; 用GUID填充该字段。
  2. 在服务器端单击处理程序的开头,输入一个Lock块。
  3. 根据该GUID检查是否存在会话密钥。 (给它一个前缀,这样它就不会与任何其他基于GUID的会话密钥冲突。)
  4. 如果键已存在,请退出lock块,然后什么也不做,或显示某种错误消息。
  5. 如果它们的密钥不存在,则向该会话密钥添加一个新值,退出lock块,然后执行操作。 给会话密钥适当的到期时间; 它不必超过几分钟。 您甚至可以在操作结束时删除相关的会话密钥,前提是可以在该位置重复该会话密钥。

在按钮单击事件中,只需编写代码

{

//Some Code

button1.Enabled = false;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM