Jquery 實現表單提交按鈕變灰,防止多次點選提交重複資料
阿新 • • 發佈:2019-01-31
表單提交時候我們應該控制提交按鈕,不能點選多次進行資料的重複提交。要不然就會有冗餘的重複的資料在系統中,造成系統出現數據垃圾。jQuery很簡單的就可以實現對錶單提交按鈕控制,下面就是相關的例子和程式碼。
<form action="${pageContext.servletContext.contextPath}/XXX/###" method="post" id="messageForm"> 姓名:<input name = "name" type="text" /> <button type="button" id="submit">提交申請</button> </form> <script> $("#submit").click(function(){ $(this).attr("disabled","true"); //設定變灰按鈕 $("#messageForm").submit();//提交表單 setTimeout("$('#submit').removeAttr('disabled')",3000); //設定三秒後提交按鈕 顯示 }) </scritp></span> </span>
附:其他的實現方法,也使用了js
第一種:
<form name=fm method="POST" action="/">
<p>按鈕變灰</p>
name: <input type="text" name="name"/>
<input type="button" value="提交" onclick="javascript:{this.disabled=true;document.fm.submit();}">
</form>
第二種:
<form name=fm method="POST" action="/" > <input type="submit" name="Submit" value="提交" id="submitId" onclick="submit();"> </form> <script language="javascript"> function submit() { var submitId=document.getElementById('submitId'); submitId.disabled=true; document.fm.submit(); setTimeout("submitId.disabled=false;",3000); //程式碼核心在這裡,3秒還原按鈕程式碼 } </script>
前後程式碼進行控制,後臺程式碼也要進行控制,這樣子就可以確保萬無一失了!
後臺程式碼控制表單提交有一個好的辦法就是使用session, 具體可以參考下面這篇博文:
http://www.cnblogs.com/xdp-gacl/p/3859416.html其實後臺控制表單重複提交的原理:
(1)在表單提交頁面生成一個唯一的token;token可以儲存在session中。(若使用了快取,也可以儲存在快取中)
(2)提交的時候驗證,後臺首先驗證token,驗證通過,才可以進行提交操作;
(3)當表單資料提交成功(儲存到資料庫-持久化),然後刪除session(快取)中對應的token。