[ASP.NET] 使用Loading遮罩防止使用者重複點擊

From: http://www.dotblogs.com.tw/joysdw12/archive/2012/12/13/85629.aspx

前言



  在網頁執行中可能會因為資料量大或其他原因影響使用者按下按鈕時頁面還在讀取而停住等待的情況發生,當碰到這種情況時,使用者可能以為沒按到而重複點擊按鈕,而導致重複送出的問題發生,碰到這種問題我們可以使用簡單的jQuery與Css代碼來處理,請看範例:

範例



首先先去找一張 Loading 的圖片,如下:

接下來編寫HTML碼,建立DIV標簽放置相關內容,如下:

<div id="divProgress" style="text-align:center; display: none; position: fixed; top: 50%;  left: 50%;" >
    <asp:Image ID="imgLoading" runat="server" ImageUrl="~/Images/loading.gif" />
    <br />
    <font color="#1B3563" size="2px">資料處理中</font>
</div>
<div id="divMaskFrame" style="background-color: #F2F4F7; display: none; left: 0px;
    position: absolute; top: 0px;">
</div>

最後在加上控制顯示或隱藏的jQuery代碼即可,如下:

// 顯示讀取遮罩
function ShowProgressBar() {
    displayProgress();
    displayMaskFrame();
}

// 隱藏讀取遮罩
function HideProgressBar() {
    var progress = $(‘#divProgress‘);
    var maskFrame = $("#divMaskFrame");
    progress.hide();
    maskFrame.hide();
}
// 顯示讀取畫面
function displayProgress() {
    var w = $(document).width();
    var h = $(window).height();
    var progress = $(‘#divProgress‘);
    progress.css({ "z-index": 999999, "top": (h / 2) - (progress.height() / 2), "left": (w / 2) - (progress.width() / 2) });
    progress.show();
}
// 顯示遮罩畫面
function displayMaskFrame() {
    var w = $(window).width();
    var h = $(document).height();
    var maskFrame = $("#divMaskFrame");
    maskFrame.css({ "z-index": 999998, "opacity": 0.7, "width": w, "height": h });
    maskFrame.show();
}

之後我們只要在要使用的按鈕上加入 onClientClick 事件觸發 ShowProgressBar(); 即可,如下:

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="送出" OnClientClick="ShowProgressBar();" />

結果如下:

如此就以簡單的方法防止,並且也不會讓使用者不知所措,使用觀感也會好一點嘍。

时间: 2024-08-29 10:48:11

[ASP.NET] 使用Loading遮罩防止使用者重複點擊的相关文章

重複性過度疲勞損傷 (肢體勞損) 的原因

由博士 Ananya 曼德爾,海事處 重複性過度疲勞損傷 (肢體勞損) 是最常見的有關過度使用和應變對肌肉. 肌腱和軟組織的上半部分的身體,就像手腕. 前臂. 肩膀. 手肘,回或頸部.(1-) 6 肢體勞損的原因在於由於肌肉及關節的壓力而出現的重複顯微創傷.這重複在微觀層面外傷導致膝蓋或肌腱. 腱鞘炎或肌腱和滑膜套筒或鞘覆蓋的肌肉與肌腱發炎的炎症. 導致肢體勞損的機制 導致炎症的實際基礎機制尚不清楚. 導致肢體勞損的因素 導致肢體勞損深處的肌肉與肌腱的共同因素包括: 肌肉. 韌帶. 肌腱和應有的

[three.js] 解決貼圖無法重複的問題 Solving with Texture RepeatWrapping Fail Issue

有些东西,你想找的时侯,怎么也找不到, 而有些东西,不经意间,随处可见: 本以为这是生活中常见的事情, 然而在浩瀚的互联大海中,也是如此. 平时的积累是为了一时之需, 几分钟的投入, 积累起来, 也会成为汪洋大海, 载起一帆小舟, 不至搁浅. 平时注一入滴水, 需时拥有太平洋, 广告词很好, 然而它真正的意义又有几人能真正领悟呢! 附一个不错的 threejs 开源链接: https://github.com/rmx/threejs-collada [three.js] 解決貼圖無法重複的問題

JS-easyui 扩展easyui.datagrid,添加数据loading遮罩效果代码

(function (){ $.extend($.fn.datagrid.methods, { //显示遮罩 loading: function(jq){ return jq.each(function(){ $(this).datagrid("getPager").pagination("loading"); var opts = $(this).datagrid("options"); var wrap = $.data(this,"

扩展easyui.datagrid,添加数据loading遮罩效果代码 --来自网摘收集

//jquery.datagrid 扩展 (function (){ $.extend($.fn.datagrid.methods, { //显示遮罩 loading: function(jq){ return jq.each(function(){ $(this).datagrid("getPager").pagination("loading"); var opts = $(this).datagrid("options"); var wra

WPF loading遮罩层 LoadingMask

先上张效果图看看 如果不如您的法眼 可以移步了 或者有更好的效果 可以留言给我 废话不多说 直接贴代码 一个usercontrol <UserControl x:Class="LoadingMask_Demo.LoadingWait" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx

一个Loading 遮罩效果

首先在body的底部增加两个DIV 1 <div class="gdiv_over"></div> 2 <div class="gdiv_layout"> 3 <img id="gLoadingGif" src="loading.gif" title="正在处理,请稍后...." /> 4 </div> 第二步,把样式加在head <styl

无线原理

1-802.11 网络类型   802.11網路的四種主要的物理組件:     工作站(Station):              通常包括配備無線網路接口的設備 接入點(Access Point):              具備無線至有線的橋接功能的設備稱之為接入點.通常分為自主型AP(Fat AP)和精簡型AP(Thin AP) 無線媒介(Wireless Medium):              規定了傳輸封包所使用的物理層介質. 分佈式系統(Distribution System)

Asp.net attributes collection

<?xml version="1.0" encoding="utf-8"?><root>  <ContralNames>    <Contral Name="@Page">      <Attribute Name="Buffer">是否啟用http響應緩沖</Attribute>      <Attribute Name="ClassNa

asp.net MVC 5 路由 Routing

ASP.NET MVC ,一个适用于WEB应用程序的经典模型 model-view-controller 模式.相对于web forms一个单一的整块,asp.net mvc是由连接在一起的各种代码层所组成. 最近又接触了关于asp.net mvc的项目,又重拾以前的记忆,感觉忘了好多,特此记录. 首先,来说说路由Routing. ASP.NET MVC 不再是要依赖于物理页面了,你可以使用自己的语法自定义URL,通过这些语法来指定资源和操作.语法通过URL模式集合表达,也称为路由. 路由是代表