1. 程式人生 > >Jquery 實現表單提交按鈕變灰,防止多次點選提交重複資料

Jquery 實現表單提交按鈕變灰,防止多次點選提交重複資料

    表單提交時候我們應該控制提交按鈕,不能點選多次進行資料的重複提交。要不然就會有冗餘的重複的資料在系統中,造成系統出現數據垃圾。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。