2024-08-14 15:17:51 +08:00

16 lines
2.7 KiB
JavaScript

/**
* Copyright (c) 2009 Sergiy Kovalchuk (serg472@gmail.com)
*
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* Following code is based on Element.mask() implementation from ExtJS framework (http://extjs.com/)
*
蜗牛修改版,QQ:672308444
新增功能及改动:
$("#info").mask("Loading",2000);//遮罩出现2秒后消失
$("#info").mask("Loading",-2000);//遮罩延迟2秒后出现
$("#info").mask("Loading",-2000,3000);//遮罩延迟2秒后出现,然后3秒后消失
*/
(function($){$.fn.mask=function(label,delay,showtime){$(this).each(function(){if(delay!==undefined){var element=$(this);if(delay<0){element.data("_mask_timeout",setTimeout(function(){$.maskElement(element,label);if(showtime>0){setTimeout(function(){$.unmaskElement(element);},showtime);}},delay*-1));}else if(delay>0){$.maskElement(element,label);setTimeout(function(){$.unmaskElement(element);},delay);}}else{$.maskElement($(this),label);}});};$.fn.unmask=function(){$(this).each(function(){$.unmaskElement($(this));});};$.fn.isMasked=function(){return this.hasClass("masked");};$.maskElement=function(element,label){if(element.data("_mask_timeout")!==undefined){clearTimeout(element.data("_mask_timeout"));element.removeData("_mask_timeout");}if(element.isMasked()){$.unmaskElement(element);}if(element.css("position")=="static"){element.addClass("masked-relative");}element.addClass("masked");var maskDiv=$('<div class="loadmask"></div>');if(navigator.userAgent.toLowerCase().indexOf("msie")>-1){maskDiv.height(element.height()+parseInt(element.css("padding-top"))+parseInt(element.css("padding-bottom")));maskDiv.width(element.width()+parseInt(element.css("padding-left"))+parseInt(element.css("padding-right")));}if(navigator.userAgent.toLowerCase().indexOf("msie 6")>-1){element.find("select").addClass("masked-hidden");}element.append(maskDiv);if(label!==undefined){var maskMsgDiv=$('<div class="loadmask-msg" style="display:none;"></div>');maskMsgDiv.append('<div>'+label+'</div>');element.append(maskMsgDiv);maskMsgDiv.css("top",Math.round(element.height()/2-(maskMsgDiv.height()-parseInt(maskMsgDiv.css("padding-top"))-parseInt(maskMsgDiv.css("padding-bottom")))/2)+"px");maskMsgDiv.css("left",Math.round(element.width()/2-(maskMsgDiv.width()-parseInt(maskMsgDiv.css("padding-left"))-parseInt(maskMsgDiv.css("padding-right")))/2)+"px");maskMsgDiv.show();}};$.unmaskElement=function(element){if(element.data("_mask_timeout")!==undefined){clearTimeout(element.data("_mask_timeout"));element.removeData("_mask_timeout");}element.find(".loadmask-msg,.loadmask").remove();element.removeClass("masked");element.removeClass("masked-relative");element.find("select").removeClass("masked-hidden");};})(jQuery);