日期:2014-05-16  浏览次数:20397 次

表单用ajax提交成功后,置为disabled,刷新后值还在,可能会造成重复提交
<form id="mdFrm">
<input type="radio" ……
<textarea> ……
……
<input type="button" value="确定提交"   /> 
</form>

一个表单,里面有若干input,textarea 等,验证通过后,ajax提交保存,返回成功的话,为了防止用户再次提交,全部input置为disabled,包括提交的按钮,代码 $("#mdFrm input").attr("disabled",true);

现在有一个问题,就是在IE下,用户提交成功,全部置为disabled后,如果用户按F5刷新浏览器,那么表单的input又变成可用了,且填写的值还保留不变,用户点提交,就可以提交一份同样的表单!

已测试IE6 IE9,均有此问题。。FF chrome maxthon没无此问题,F5刷新后,表单值已经清空。

如何解决IE下这个问题?
------解决方案--------------------
你都刷新了,前面设置的disable肯定没用了。这个得后台限制
------解决方案--------------------
加载页面后表单的值都置null,这样就得重填数据后才能提交
------解决方案--------------------
你添加成功后,可以清空表单(document.getElementById("myForm").reset()),另外你的后台处理应该有所判断,应该根据某些字段查重,如果重复,不在添加


------解决方案--------------------
cookie存储下是否已经提交过,window.onload判断cookie是否存在,存在则$("#mdFrm input").attr("disabled",true);执行一次

IE不会记录js设置的状态,这个比较麻烦
------解决方案--------------------
引用:
Quote: 引用:

你都刷新了,前面设置的disable肯定没用了。这个得后台限制

disabled没用正常,关键是为什么刷新后填写的值又保留着呢?

刷新后 值还存在 是 浏览器缓存的问题
最好 手动置空
------解决方案--------------------
同样的单,你只想让他提交一次?
那么每个单,你挑一点特别的东西出来做为唯一标识,去数据库里检测这些特别的东西是否存在。如果存在,那么就不让他提前 了。
其它什么COOKIE啊,作用也不大,别人把本地COOKIE清了一样可以重复提交。