程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> asp.net表單提交時防重復提交並執行前台的JS驗證

asp.net表單提交時防重復提交並執行前台的JS驗證

編輯:ASP.NET基礎
在項目開發中,遇到這樣的一個情況,就是用戶重復提交。當然這個不能怪用戶,只能怪.NET或者服務器反應遲鈍......我是這樣理解的。
在網上搜了一下,解決方案是不少,比如:
http://bbs.csdn.net/topics/340048988
(這個大家提了不少建議)
http://www.cnblogs.com/blsong/archive/2009/12/24/1631144.html
(這個基本上總結了網上的方法)
但實際上做互聯網web項目中,需要在前台執行JS或者Jquery的驗證(主要是增強用戶體驗),那麼再使用上面的方法,就會出現問題。要麼重復提交依然存在,要麼前台JS驗證失效。最後沒辦法,只有自己寫一個,在滿足阻止用戶重復提交的情況下,還能保證前台JS驗證有效。代碼如下:
復制代碼 代碼如下:
//按鈕注冊加載樣式事件
var ItSelfButton;
var ControlRegPostResult = true;
function AddInputClick() {
$("input[type='submit']").click(function () {
ItSelfButton = $(this);
if (ItSelfButton.attr("repeat") == null) {
var btnDiv = $("<div>");
btnDiv.attr("id", "Mask_BTN");
var divimg = $("<img>");
divimg.attr("alt", "加載中...");
divimg.attr("src", "/Images/ButtonLoading.gif");
divimg.css({ "margin-left": ($(this).width() - 4) / 2, "margin-top": ($(this).height() - 16) / 2 });
btnDiv.append(divimg);
btnDiv.css({ width: $(this).width() + 12 + "px", height: $(this).height() + "px", top: $(this).offset().top + "px", left: $(this).offset().left + "px", position: "absolute" });
$(document.body).append(btnDiv);
setTimeout(MaskTimeOutRemove, 200);
}
});
}
$(function () {
AddInputClick();
});
$(window).resize(function () {
if (ItSelfButton != null) {
$("#Mask_BTN").css({ top: ItSelfButton.offset().top + "px", left: ItSelfButton.offset().left + "px" });
}
});
function MaskRemove() {
$("#Mask_BTN").remove();
}
function MaskTimeOutRemove() {
if (!ControlRegPostResult) {
$("#Mask_BTN").remove();
ControlRegPostResult = true;
}
}

其中在JS 驗證失敗中將
復制代碼 代碼如下:
ControlRegPostResult = false;

這樣基本上滿足我的目的了。
ButtonLoading.gif 可以是一個打轉的圖片 ,也可以和按鈕一樣大。反正目的是這個層把按鈕遮住。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved