点了提交按钮并且通过验证时,直接把按钮置灰。JS方案
还有就看你表单上是否有验证码?提交成功了,后台把验证码的值换掉,要是重复提交,验证码会验证出来!
因为是做的单据,所以没办法用验证码,暂时只想到在页面定义一个object,然后在保存的时候lock起来,在lock里面判断按钮是否可用,如不可用则return,可用则先禁用,再处理后续,这样即便重复提交了,在第二次保存的时候,按钮已经是不可用了,所以会return。暂时就想到这样的
@清海扬波: 可以的。
@Alex_QY1987: object必须设置为static才能锁得住,不然锁不住,但是设置为static之后,所有的客户端都得受这个object控制了吧,那都得排队处理了。/
@清海扬波: ???你是在后台操作???直接在页面定义一个JS变量控制不行么???
@Alex_QY1987: 是的,后台用static的object都锁不住,不知道是不是postback之后这个object都重新初始化了。页面js不行,业务上实现不了这个效果。
@清海扬波: JS为什么实现不了?你在点击按钮的时候,当页面所有的验证都通过,在执行form的post之前把提交按钮给变灰,这样用户就不能再点击了,不就防止了重复提交了么?
我们的项目里就这么干呢!
@Alex_QY1987: 这样确实能实现按钮变灰,但是变灰之后,就不在响应服务器事件了,按钮事件就没了。
c/s 将按钮灰掉,b/s 在前端js加一个全局标志。
因为不是纯静态页面,用js实现不了。
提交成功了,就跳轉到其他頁面。
一个页面一个功能模块,不能跳转的。保存之后除了按钮状态有变化,其他都没变化。
@清海扬波: 可以跳到前一頁。
如果還不行的話,查詢該業務數據是否在表中是否已存在,存在則提示不能再保存;不存在則可以保存。
總之需要一個標誌來判斷是否保存。
@会飞的金鱼: 因为数据业务太多,在数据库处理不方便,暂时先用1楼那个办法试试。
点击后禁用按钮啊
禁用之后服务器事件就会不再触发
@清海扬波: 这样就防止重复提交了啊
@刘宏玺: 这样就防止重复了,但是提交不了了。
最后找到办法了,再加个postback提交就好了。
看到对3楼的回复,我在想你是用asp或是asp.net的吧?
是的,asp.net
你不想禁用的话那就在提交之后更改按钮的状态值,随便找一个没有的属性里面存状态值,或者干脆把状态值存到一个隐藏域里面,提交的时候判断这个状态值不就行了吗?根据你的业务需求,不同的状态值做不同的业务处理。