0

我正在做一个电子商务项目。在结账过程中,在结账过程结束时有一个购买商品的按钮。单击该按钮会使用 POST 请求(标准,无 AJAX)在页面上提交表单。但是,如果您非常快速地多次单击该提交按钮,则会将多个 POST 请求发送到服务器,因此还会创建多个订单。

我的问题:是否可以通过 javascript 防止这些多个按钮单击,或者页面是否在某个时候处于奇怪的状态,因为新页面加载开始了?

如果我使用内联脚本执行此操作,是否有区别:

onsubmit="if(submitted) return false; submitted = true; return true"

还是在我的 JS 外部文件中?

另一种选择是在表单提交后立即禁用提交按钮,但 IE 为按钮添加了非常丑陋的字体颜色,CSS 无法将其删除。

4

1 回答 1

0

该页面继续处理事件并运行 javascript,直到表单 Post 返回新内容,然后替换当前文档,从而加载新文档。在新内容到来并关闭当前文档之前,它不会处于奇怪的状态并正常工作。

有多种技术可以防止多次按下按钮。您的代码可以跟踪已发送帖子的事实(在全局变量中),并在设置该变量时阻止任何更多发送。在 UI 中,您可以在第一次发布后立即禁用该按钮,这样就无法再次按下该按钮。

于 2013-09-25T06:39:45.880 回答