标签:
在网上搜集到一块JS框架代码,和大家分享一下
===========================================================
//定义JS命名空间、防止JS签名重复
var Namespace = Namespace || new Object();
Namespace.register = function(path){var arr = path.split("."),ns = "";;for(var i=0;i<arr.length;i++){if(i>0){ns += ".";}ns += arr[i];eval("if(typeof(" + ns + ")==‘undefined‘){" + ns + " = new Object();}");}};
//基础框架
Namespace.register("XVDE");
(function(){
String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g, "");};
String.prototype.ltrim=function(){return this.replace(/^\s+/g, "");};
String.prototype.rtrim=function(){return this.replace(/\s+$/g, "");};
String.prototype.firstIndexOf=function(prefix){var index=-1,temp = -1,str = this;while((temp = str.lastIndexOf(prefix))>=0){str = str.substring(0,temp);index = temp;}return index;};
String.prototype.endsWith=function(suffix){var C=this.length;var D=suffix.length;if(D>C)return false;return (D==0 || this.substr(C-D,D)==suffix);};
String.prototype.replaceAll=function(regex,replacement) {var raRegExp = new RegExp(regex,"g");return this.replace(raRegExp,replacement);};
String.prototype.chineseLength=function(){ return this.replace(/[^\x00-\xff]/g,"**").length;};
String.prototype.remove=function(startIndex,removeLength) {var s=‘‘;if(startIndex>0)s=this.substring(0,startIndex);if(startIndex+removeLength<this.length)s+=this.substring(startIndex+removeLength,this.length);return s;};
Date.prototype.format=function(mask){var d = this;var zeroize = function (value, length) {if (!length) length = 2;value = String(value);for (var i = 0, zeros = ‘‘; i < (length - value.length); i++) {zeros += ‘0‘;}return zeros + value;};return mask.replace(/"[^"]*"|‘[^‘]*‘|\b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])\1?|[lLZ])\b/g, function($0) {switch($0) {case ‘d‘:return d.getDate(); case ‘dd‘:return zeroize(d.getDate());case ‘ddd‘:return [‘Sun‘,‘Mon‘,‘Tue‘,‘Wed‘,‘Thr‘,‘Fri‘,‘Sat‘][d.getDay()];case ‘dddd‘:return [‘Sunday‘,‘Monday‘,‘Tuesday‘,‘Wednesday‘,‘Thursday‘,‘Friday‘,‘Saturday‘][d.getDay()];case ‘M‘:return d.getMonth() + 1;case ‘MM‘:return zeroize(d.getMonth() + 1);case ‘MMM‘:return [‘Jan‘,‘Feb‘,‘Mar‘,‘Apr‘,‘May‘,‘Jun‘,‘Jul‘,‘Aug‘,‘Sep‘,‘Oct‘,‘Nov‘,‘Dec‘][d.getMonth()]; case ‘MMMM‘:return [‘January‘,‘February‘,‘March‘,‘April‘,‘May‘,‘June‘,‘July‘,‘August‘,‘September‘,‘October‘,‘November‘,‘December‘][d.getMonth()];case ‘yy‘:return String(d.getFullYear()).substr(2);case ‘yyyy‘:return d.getFullYear();case ‘h‘:return d.getHours() % 12 || 12; case ‘hh‘:return zeroize(d.getHours() % 12 || 12); case ‘H‘:return d.getHours();case ‘HH‘:return zeroize(d.getHours());case ‘m‘:return d.getMinutes();case ‘mm‘:return zeroize(d.getMinutes());case ‘s‘:return d.getSeconds();case ‘ss‘:return zeroize(d.getSeconds());case ‘l‘:return zeroize(d.getMilliseconds(), 3);case ‘L‘:var m = d.getMilliseconds();if (m > 99) m = Math.round(m / 10);return zeroize(m);case ‘tt‘:return d.getHours() < 12 ? ‘am‘ : ‘pm‘;case ‘TT‘:return d.getHours() < 12 ? ‘AM‘ : ‘PM‘;case ‘Z‘:return d.toUTCString().match(/[A-Z]+$/);default:return $0.substr(1, $0.length - 2);}});};
XVDE.isne = function(str){return str==null||str=="undefined"||str.trim()=="";};
XVDE.vmContainer = function(){return $("#vmContainer");};
XVDE.constructor = new Array();//构造方法列表
XVDE.addConstructor = function(func){XVDE.constructor.push(func);};//新增构造方法
XVDE.init = function(panel){//初始化执行所有构造方法
var execute = function(func){try{eval("func();");}catch(e){console.log(e);}};
for(var func in XVDE.constructor){execute(function(){XVDE.constructor[func](panel);});}
$("SPAN.pageLoad").each(function(i,o){execute(function(){eval($(o).remove().attr("data-pageLoad"));});});
var navBar = $("#vmContainer #navBar");
$("BODY.admin>DIV.content>UL.breadcrumb").html(navBar.html());
$("BODY.admin>DIV.content>DIV.header>H1.page-title").text(navBar.attr("title"));
};
})();
Namespace.register("XVDE.tip");
(function(){
XVDE.tip.init = function(panel) {//鼠标提示
var content = "BODY";
if(panel != null) {content = panel;}
$(content).find("*[rel=popover]").each(function(i,o){var contentEl = $(o).attr("data-content"),contentFunc=null;if(!XVDE.isne(contentEl) && contentEl.indexOf("javascript:")==0){$(o).removeAttr("data-content");contentFunc = function(){var text = eval(contentEl.substr(11));$(o).attr("data-content",text);return text;};}$(o).removeAttr("rel").popover({content:contentFunc});});
$(content).find("*[rel=tooltip]").each(function(i,o){$(o).removeAttr("rel").tooltip();});
$(content).find("*.tip").each(function(i,o){$(o).removeClass("tip").attr("title",$(o).text().trim());});
};
XVDE.addConstructor(XVDE.tip.init);
})();
Namespace.register("XVDE.table");
(function(){
XVDE.table.resizable = function(panel){
var table = "TABLE.table thead th,TABLE.table thead td";
if(panel != null) {tbale = $(panel).find(table);}
var oldCursor = $(table).attr("title","点击排序").css(‘cursor‘);
var resizeWidth = 2;//拖动偏离像素
//表格拖动
$(table).unbind("mousemove").bind("mousemove",function(ev){
var th = $(this);
if (th.prevAll().length < 1 || th.nextAll().length < 1) {return;}//不给第一列和最后一列添加效果
//距离表头边框线左右4像素才触发效果
var left = th.offset().left;
var effect = (ev.clientX - left) < resizeWidth || (th.outerWidth() - (ev.clientX - left)) < resizeWidth;
if (effect) {th.css(‘cursor‘,‘col-resize‘);} else{th.css(‘cursor‘,oldCursor);}
}).unbind("mousedown").bind("mousedown", function(ev) {
var dd = new Object();
dd.obj = $(this);//TH对象
var pos = dd.obj.offset();
dd.table = dd.obj.parent().parent().parent();//Table对象
var effect = (ev.clientX - pos.left) < resizeWidth || (dd.obj.outerWidth() - (ev.clientX - pos.left)) < resizeWidth;
if (!effect || dd.obj.prevAll().length < 1 || dd.obj.nextAll().length < 1) {return;}//跳过第一列和最后一列
dd.line = $("<div class=‘dragLine‘></div>");//竖线
dd.line.css({ "height": dd.table.height(), "top": dd.table.offset().top,"left":ev .clientX,"display":"block" });//显示调整线
if (ev.clientX - pos.left < dd.obj.width() / 2){dd.obj = dd.obj.prev();}//记录当前TH
var x = ev.clientX;dd.rangeStart = dd.table.offset().left;dd.rangeEnd = dd.rangeStart + dd.table.width();
$("body").append(dd.line).bind("selectstart",function(){
return false;
}).bind("mousemove",function(event){
if(dd.rangeStart < event.clientX && dd.rangeEnd > event.clientX){dd.line.css({"left":event.clientX});dd.deltaX = event.clientX - x;}
}).bind("mouseup",function(event){
dd.line.remove();dd.obj.width(Math.max(40, dd.obj.width() + dd.deltaX));
var defaultWidth = parseInt(dd.table.attr("defaultWidth"));
dd.table.width(Math.max(defaultWidth, dd.table.width() + dd.deltaX));
$("body").unbind("mousemove").unbind("mouseup").unbind("selectstart").css(‘cursor‘,‘default‘).attr("unselectable","off").css("MozUserSelect","");
}).css(‘cursor‘,‘col-resize‘).attr("unselectable","on").css("MozUserSelect","none");
});
};
XVDE.addConstructor(XVDE.table.resizable);
//表格排序
XVDE.table.sorting = function(panel){
var sorting = "TABLE.table .sorting,TABLE.table .sorting_ASC,TABLE.table .sorting_DESC";
if(panel != null) {sorting = $(panel).find(sorting);}
$(sorting).unbind("click").bind("click",function(){
var field = $(this).attr("data-orderField"),type = $(this).attr("data-orderFieldType");
var form = XVDE.vmContainer().find("FORM")[0];
if(form["orderField"]==null){$(form).append("<input type=‘hidden‘ name=‘orderField‘/>");}
if(form["orderFieldType"]==null){$(form).append("<input type=‘hidden‘ name=‘orderFieldType‘/>");}
form["orderField"].value = field;
form["orderFieldType"].value = type;
$(form).submit();
});
};
XVDE.addConstructor(XVDE.table.sorting);
})();
Namespace.register("XVDE.window");
(function(){
//打开窗口
XVDE.window.open = function(url,params,method,conf){
var open = function(data) {
//JSON数据
try{if(data != null && !XVDE.isne(data.result)){alert(data.result);return;}}catch(e){}
var modal = XVDE.window.openDialog(data,conf);
modal.attr("data-url",url).attr("data-params",params).attr("data-method",method);
};
XVDE.ajax.send(url,params,method,null,{callback:open});
};
XVDE.window.queue = new Array();//当前已经打开的窗口
//打开对话框窗口
XVDE.window.openDialog = function(content,conf){
var def_opts ={title:‘弹出窗口‘,width : ‘auto‘,height : ‘auto‘,buttons:[],draggable:true,closeable:true};
var options=$.extend(true, {}, def_opts, conf || {});
var modal = $("<div class=‘modal hide window‘></div>");
var modalHeader = $("<div class=‘modal-header‘></div>");
var backdrop = $(‘<div class="modal-backdrop"/>‘);
if(options.closeable) {
var closeBtn = $("<a class=‘close‘>×</a>");
closeBtn.bind("click",function(){modal.remove();backdrop.remove();XVDE.window.queue.pop();});
modalHeader.append(closeBtn);
}
modalHeader.append("<h3>"+options["title"]+"</h3>");
var modalBody = $("<div class=‘modal-body‘ style=‘padding:10px‘></div>");
modalBody.append(content);
var modalFooter = "";
modalBody.find("DIV.bottomBar>button,DIV.bottomBar>A").each(function(i,o){
options.buttons.push(o);
});
if(options.buttons != null && options.buttons.length > 0) {
modalFooter = $("<div class=‘modal-footer‘ style=‘padding:10px‘></div>");
for(var btn in options.buttons){
modalFooter.append(options.buttons[btn]);
}
}
XVDE.window.queue.push(modal);
var zIndex = 1050+XVDE.window.queue.length;
backdrop.css("z-index",zIndex);
modal.append(modalHeader).append(modalBody).append(modalFooter).appendTo(document.body).before(backdrop);
setTimeout(function(){
modal.css({"z-index":zIndex+1,"width":options.width,"height":options.height,"margin-left":"0px"});
var left =($(window).width() - modal.width())/2 - 63;
var top =($(window).height() - modal.height())/2;
modal.css({"left":left,"top":top}).fadeIn("slow");
},50);
if(options.draggable){modal.draggable({handle: modalHeader,containment:‘BODY‘});}
XVDE.init(modal);
return modal;
};
//关闭顶层窗口
XVDE.window.close = function(){
var length = XVDE.window.queue.length;
if(length>0){XVDE.window.queue[length-1].find(‘DIV.modal-header>A.close‘).click();}
};
//关闭所有窗口
XVDE.window.closeAll = function(){
$("DIV.modal-backdrop,DIV.modal").remove();
XVDE.window.queue = new Array();
};
XVDE.window.refresh = function(){//刷新顶层窗口
if(XVDE.window.queue.length <= 0) {return false;}
var modal = XVDE.window.queue[XVDE.window.queue.length-1];
var opts = {"url": modal.attr("data-url"),"params": modal.attr("data-params"),"method": modal.attr("data-method")};
if(opts.url == null){return false;}
var refresh = function(data) {
try{if(data != null && !XVDE.isne(data.result)){alert(data.result);return false;}}catch(e){}
var content = modal.find("DIV.modal-body");
XVDE.init(content.html(data));
};
XVDE.ajax.send(opts.url,opts.params,opts.method,null,{callback:refresh});
return true;
};
})();
Namespace.register("XVDE.form");
(function(){
XVDE.form.page = function(num) {
var form = XVDE.vmContainer().find("FORM")[0];
if(form["pageSize"]==null){$(form).append("<input type=‘hidden‘ name=‘pageSize‘/>");}
if(form["currentPage"]==null){$(form).append("<input type=‘hidden‘ name=‘currentPage‘/>");}
form["pageSize"].value = XVDE.vmContainer().find("#page-pageSize").val();
form["currentPage"].value = num;
$(form).submit();
};
XVDE.form.setPageSize = function(dv,inp,evt){
if(inp.value == "") {return;}
inp.value = inp.value.replace(/\D+/g,‘‘);
if(inp.value < 1) {inp.value = dv;}
if(evt.keyCode==13){XVDE.form.page(1);}
};
XVDE.form.showAll = function(count){
$("#page-pageSize").val(count);
XVDE.form.page(1);
};
XVDE.form.init = function(panel) {
var from = "FORM";
if(panel != null) {from = $(panel).find(from);}
$(from).unbind("submit").bind("submit",function(){//阻止表单默认提交事件
var dataType = $(this).attr("data-resultType");
var isJSON = (!XVDE.isne(dataType) && dataType.toUpperCase() == "JSON");
var refresh = ($(this).attr("refresh") == "true"?true:false);
XVDE.ajax.send($(this).attr("action"),$(this).serialize(),$(this).attr("method"),dataType,{
"closeWindow":isJSON||refresh,"refresh":isJSON||refresh
});
return false;
});
};
XVDE.addConstructor(XVDE.form.init);
})();
Namespace.register("XVDE.ajax");
(function(){
//内部私有方法
var successMethod = function(data,dataType){//请求成功
try{if(data != null && !XVDE.isne(data.result)) {alert(data.result);return;}} catch (e) {}
XVDE.init(XVDE.vmContainer().html(data));
},errorMethod = function(xhr,url,requestType){//请求错误
var message = {"code":"failure","result":"请求URL["+url+"],发生"+xhr["statusText"]+"错误."};
var dataType = XVDE.isne(requestType) ? "" : requestType.toUpperCase();
switch (xhr["status"]) {
case 403: message["result"]="您无权访问本页面.";break;
case 404: message["result"]="不存在的URL["+url+"]";break;
case 500: message["result"]="服务器内部错误."+xhr["statusText"];break;
}
if(dataType == "JSON" || (!XVDE.isne(url) && url.toUpperCase().endsWith(".JSON"))) {successMethod(message,dataType);}
else{successMethod("<div class=‘alert‘>"+message["result"]+"</div>",dataType);}
},vmData = new Object();
//页面跳转
XVDE.gotoPage = function(url,params,method){
vmData = {"url":url,"params":params,"method":method};
XVDE.refreshVM();
};
//刷新当前VM
XVDE.refreshVM = function(){
XVDE.ajax.send(vmData.url,vmData.params,vmData.method);return true;
};
//Ajax请求
XVDE.ajax.send = function(url,params,method,type,config){
var cfg = $.extend(true, {}, {"closeWindow":false,"refresh":false,"callback":null}, config || {});
var ajaxOptions = {
url:contextPath + url,data:params,
success:function(data){
var type = XVDE.isne(this.dataType) ? "" : this.dataType.toUpperCase();
if(cfg.callback != null) {
cfg.callback(data);
} else {
successMethod(data,type);
}
if(type=="JSON" && data.code == "failure") {return;}
if(cfg.closeWindow == true) {
XVDE.window.close();
}
if(cfg.refresh == true && XVDE.window.refresh()==false) {
XVDE.refreshVM();
}
}
};
if(!XVDE.isne(method)) {ajaxOptions["type"] = method;}
if(!XVDE.isne(type)) {ajaxOptions["dataType"] = type;}
jQuery.ajax(ajaxOptions);
};
//以JSON的方式执行DELETE方法
XVDE.ajax["delete"] = function(url,params,config) {
var cfg = $.extend(true, {}, {"confirm":"您确定要删除吗?"}, config || {});
if(window.confirm(cfg.confirm)) {
XVDE.ajax.send(url,params,"DELETE","",config);
}
};
//请求时界面遮罩
XVDE.ajax.mask = function(msg){var info = msg;if($("#winModal,#loadInfo").length == 0) {var msg = (!XVDE.isne(info)) ? info:"正在努力为您获取数据,请稍候...";$("body").append("<div id=‘winModal‘ class=‘modal-backdrop fade in‘ style=‘z-index:9999‘></div><div id=‘loadInfo‘>"+msg+"</div>");}};
XVDE.ajax.unmask = function(){$("#winModal,#loadInfo").remove();};
//Ajax全局设置
jQuery.ajaxSetup({
type:"POST",cache:false,
beforeSend :function(xhr){XVDE.ajax.mask();},
error :function(xhr, ts,et){errorMethod(xhr, this.url,this.dataType);this.complete(xhr, ts);},
complete :function(xhr, ts){XVDE.ajax.unmask();}
});
})();
标签:
原文地址:http://www.cnblogs.com/gstsyyb/p/5090846.html