我有一个表单,在单击时禁用提交按钮。 但是如果用户点击浏览器“停止”按钮该怎么办 然后他将无法重新提交表格。
有没有办法处理这种情况,可能会检测到按停止按钮?
答案 0 :(得分:2)
禁用提交按钮的原因是什么?
您是否试图避免双击? - >您可以在短时间内禁用提交按钮,并在超时时重新启用它。
您是否正在尝试避免不耐烦的重新加载点击? - >相同,但有较长的不活动期。
您是否试图停止提交两次的表单,从而导致重复操作? - >你只能通过按钮禁用来解决这个问题,因为返回/转发会导致页面被重新加载,可能会保留旧的表单内容而不是禁用状态,除非bfcache短路。在这种情况下,您必须创建一次性使用令牌或不能多次使用的新项目ID,并将其放在表单中的隐藏字段中。服务器可以检查它并禁止重复。
可能检测到按停止按钮?
避免onstop
,这不太可靠。除了浏览器支持问题,它无法捕获所有可能的导航和停止/重新加载等组合。你永远不会知道服务器脚本到底有多远,无论它是否执行了一个动作。
答案 1 :(得分:1)
您最好的选择是检测服务器上的提交按钮 ,因此只能提交一次。这样,无论发生什么(萤火虫等),表单只提交一次。有一个OnStop()
事件,但它只是IE,我不建议使用它。
答案 2 :(得分:-1)