js阻止form表單重復提交


防止表單重復提交的方法總體來說有兩種,一種是在js中阻止重復提交;另一種是在后台利用token令牌實現,大致思路是生成一個隨機碼放到session和form表單的隱藏輸入框中,提交表單時兩者對比,表單處理完畢清空或者修改session中的token。

在js中處理簡單易懂,同時能解決我現在所做的項目中的問題,目前暫用js處理,后期如有需要再研究token機制。代碼如下:

1、表單提交后禁用提交按鈕(在本項目中表單提交完成后,如果處理成功都把form表單關掉了)

 1 /**
 2  * form表單格式驗證通過之后、表單提交前將提交按鈕禁用(注意順序)
 3  * @param submitBtnId 提交按鈕ID
 4  * @param btnType 按鈕類型 'button'或者'linkbutton'
 5  * @returns {Boolean}
 6  */
 7 function disableSubmitBtn(submitBtnId, btnType){
 8   if(btnType == 'button'){
 9     $("#"+submitBtnId).attr("disabled","disabled");
10   }else if(btnType == 'linkbutton'){
11     $("#"+submitBtnId).linkbutton('disable');
12   }
13   return true;
14 }

由於在項目中有用到普通button和easyUI的linkbutton兩種按鈕,而禁用這兩種按鈕的方法不同,所以需要多傳一個參數btnType(按鈕類型)

2、如果提交表單失敗則啟用按鈕,以便用戶修改內容后再次提交

 1 /**
 2  * form表單提交失敗后將提交按鈕開啟,以便用戶修改數據后再次提交
 3  * @param submitBtnId 提交按鈕ID
 4  * @param btnType 按鈕類型 'button'或者'linkbutton'
 5  * @returns {Boolean}
 6  */
 7 function enableSubmitBtn(submitBtnId, btnType){
 8   if(btnType == 'button'){
 9     $("#"+submitBtnId).removeAttr("disabled");
10   }else if(btnType == 'linkbutton'){
11     $("#"+submitBtnId).linkbutton('enable');
12   }
13   return true;
14 }

3、在每次表單提交時調用這兩個方法,具體放的位置根據實際業務邏輯而定

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM