在java jsp中怎么处理用户多次点击提交按钮造成数据重复。

在表单提交的时候用jquery需要做一些有效性验证 ,所以 在点击按钮的时候 设置按钮不可用是行不通的。如果表单里的信息无效 这时把提交按钮禁用了 不好。项目中控制器用的是spring的mvc框架控制的。 希望各位大哥哥大姐姐 们给个解决的方法。先谢谢了!!
先谢谢各位的帮助了!!!
在我的表单中有30多个文本域 、有复选框、下列表、file控件,其中有手机号、这个手机号在数据库中是唯一的,所以在表单提交的时候要先去后台进行比较,进行唯一性约束。但是在重复点击按钮的时候 ,却不提示。后来同一条相同的记录在数据库中有多条,也就是这个手机号码也是重复的。
对于用 js做验证 我也试过了,,我的表单验证用的是jquery验证组件,我也试过在submit后的js代码不管验证通过不通过都会执行的。我也想的是如果验证不通过 submit 后的内容不执行。
最新回答
不爱。就_滚_

2024-07-01 00:32:24

如果js验证通过,再把button设为不可用
防止因为网络问题多次提交

----------------
都说这么清楚了你还要怎么说??????
js只能进行简单的表单验证,例如为不为空 和 文本格式等
ajax是异步的,也就是说你submit事件和判断手机号存不存在不会等待你是否判断完成的!!!
你把手机号的判断写提交里当然没反应!!
所以你需要先判断手机号,再决定是否提交
方法1:手机号的控件失去焦点事件onblur()失去焦点时将请求后台判断是否存在,如果存在提交按钮设为可用,不存在则为不可用并提示!
方法2:写一个form的提交function,假设你的form的name为formA
function sub_form(){
$.post("xxx.action",param,function(result){
if(result){
// 验证其他表单信息的方法
if(vali()){
formA.submit();
}
}
});
}
追问
非常感谢你的帮助,我在表单提交的时候用的是jquery的验证组件用remote当手机文本域有变化时就会去后台验证的,我也是很纳闷,做了验证,网速慢,但是在重复提交按钮的时候就不会去验证了.可能是卡到后台了.所以最后我在后台controller中进行验证的在新增的时候先用手机号去查询看数据库中时候有记录,如果没有再进行新增 如果有了,就跳过.我也在网上看了有什么token 可以很好的解决.不知在下是否了解.能给点详细的帮助不?
追答
总之就是保证手机号与数据库比对不存在之前提交按钮不可用
或者
提交重写个事件,先比对手机号 把form.submit写在ajax的回调函数里
就是要保持状态的一致
我一直是这么解决的并且每问题
追问
谢谢这位朋友的热心帮助,这个问题我已解决、我是在跳到一个新增页面前向session中存储数据,然后再提交的处理方法中 先判断session中时候是否有数据 ,如果有则上删除session中的信息 并且向下执行。我觉得这样比较好。
追答
这样似乎有些欠妥,当你添加的过程中不能保证session与数据库的同步。
可能其他新增操作会新增手机号

如果你能确保只有一个进行操作,是可行的 不过不严谨
待我学渣成霸

2024-07-01 00:08:06

用jquery验证啊,
ajax把值传到后台数据库比较,存在了不让提交不久好了
浪里个浪

2024-07-01 01:02:15

设置一个提交状态呗
提交的时候验证下
验证通过就改状态
下次提交验证就通不过啦
一身正气结果漏气

2024-07-01 00:01:13

用JS做验证,提交时会根据验证方法返回的true false自动提交或取消提交操作