/**
* 模块名:共通脚本
* 程序名: 通用工具函数
**/ var utils = {}; /**
* 格式化字符串
* 用法:
.formatString("{0}-{1}","a","b");
*/
utils.formatString = function () {
for (var i = 1; i < arguments.length; i++) {
var exp = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
arguments[0] = arguments[0].replace(exp, arguments[i]);
}
return arguments[0];
}; /**
* 格式化时间显示方式
* 用法:format="yyyy-MM-dd hh:mm:ss";
*/
utils.formatDate = function (v, format) {
if (!v) return "";
var d = v;
if (typeof v === 'string') {
if (v.indexOf("/Date(") > -1)
d = new Date(parseInt(v.replace("/Date(", "").replace(")/", ""), 10));
else
d = new Date(Date.parse(v.replace(/-/g, "/").replace("T", " ").split(".")[0]));//.split(".")[0] 用来处理出现毫秒的情况,截取掉.xxx,否则会出错
}
var o = {
"M+": d.getMonth() + 1, //month
"d+": d.getDate(), //day
"h+": d.getHours(), //hour
"m+": d.getMinutes(), //minute
"s+": d.getSeconds(), //second
"q+": Math.floor((d.getMonth() + 3) / 3), //quarter
"S": d.getMilliseconds() //millisecond
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
}
return format;
}; /**
* 检查是否为年月的日期格式
*/
utils.checkYearMonthDate = function (v) {
var reg = /^(\d{4})-(\d{2})$/;
var result = v.match(reg);
if (result == null) {
return false
}
else {
return true
}
}; /**
* 检查是否为年月日的日期格式
*/
utils.checkYearMonthDayDate = function (v) {
var reg = /^(\d{4})-(\d{2})-(\d{2})$/;
var result = v.match(reg);
if (result == null) {
return false
}
else {
return true
}
}; /**
* 格式化数字显示方式
* 用法
* formatNumber(12345.999,'#,##0.00');
* formatNumber(12345.999,'#,##0.##');
* formatNumber(123,'000000');
*/
utils.formatNumber = function (v, pattern) {
if (v == null)
return v;
var strarr = v ? v.toString().split('.') : ['0'];
var fmtarr = pattern ? pattern.split('.') : [''];
var retstr = '';
// 整数部分
var str = strarr[0];
var fmt = fmtarr[0];
var i = str.length - 1;
var comma = false;
for (var f = fmt.length - 1; f >= 0; f--) {
switch (fmt.substr(f, 1)) {
case '#':
if (i >= 0) retstr = str.substr(i--, 1) + retstr;
break;
case '0':
if (i >= 0) retstr = str.substr(i--, 1) + retstr;
else retstr = '0' + retstr;
break;
case ',':
comma = true;
retstr = ',' + retstr;
break;
}
}
if (i >= 0) {
if (comma) {
var l = str.length;
for (; i >= 0; i--) {
retstr = str.substr(i, 1) + retstr;
if (i > 0 && ((l - i) % 3) == 0) retstr = ',' + retstr;
}
}
else retstr = str.substr(0, i + 1) + retstr;
}
retstr = retstr + '.';
// 处理小数部分
str = strarr.length > 1 ? strarr[1] : '';
fmt = fmtarr.length > 1 ? fmtarr[1] : '';
i = 0;
for (var f = 0; f < fmt.length; f++) {
switch (fmt.substr(f, 1)) {
case '#':
if (i < str.length) retstr += str.substr(i++, 1);
break;
case '0':
if (i < str.length) retstr += str.substr(i++, 1);
else retstr += '0';
break;
}
}
return retstr.replace(/^,+/, '').replace(/\.$/, '');
}; /**
* json格式转树状结构
* @param {json} json数据
* @param {String} id的字符串
* @param {String} 父id的字符串
* @param {String} children的字符串
* @return {Array} 数组
*/
utils.toTreeData = function (a, idStr, pidStr, childrenStr) {
var r = [], hash = {}, len = (a || []).length;
for (var i = 0; i < len; i++) {
hash[a[i][idStr]] = a[i];
}
for (var j = 0; j < len; j++) {
var aVal = a[j], hashVP = hash[aVal[pidStr]];
if (hashVP) {
!hashVP[childrenStr] && (hashVP[childrenStr] = []);
hashVP[childrenStr].push(aVal);
} else {
r.push(aVal);
}
}
return r;
}; utils.eachTreeRow = function (treeData, eachHandler) {
for (var i in treeData) {
if (eachHandler(treeData[i]) == false) break;
if (treeData[i].children)
utils.eachTreeRow(treeData[i].children, eachHandler);
}
}; utils.isInChild = function (treeData, pid, id) {
var isChild = false;
utils.eachTreeRow(treeData, function (curNode) {
if (curNode.id == pid) {
utils.eachTreeRow([curNode], function (row) {
if (row.id == id) {
isChild = true;
return false;
}
});
return false;
}
});
return isChild;
}; utils.fnValueToText = function (list, value, text) {
var map = {};
for (var i in list) {
map[list[i][value || 'value']] = list[i][text || 'text'];
}
var fnConvert = function (v, r) {
return map[v];
};
return fnConvert;
}; utils.compareObject = function (v1, v2) {
var countProps = function (obj) {
var count = 0;
for (k in obj) if (obj.hasOwnProperty(k)) count++;
return count;
}; if (typeof (v1) !== typeof (v2)) {
return false;
} if (typeof (v1) === "function") {
return v1.toString() === v2.toString();
} if (v1 instanceof Object && v2 instanceof Object) {
if (countProps(v1) !== countProps(v2)) {
return false;
}
var r = true;
for (k in v1) {
r = utils.compareObject(v1[k], v2[k]);
if (!r) {
return false;
}
}
return true;
} else {
return v1 === v2;
}
}; utils.minusArray = function (arr1, arr2) {
var arr = [];
for (var i in arr1) {
var b = true;
for (var j in arr2) {
if (utils.compareObject(arr1[i], arr2[j])) {
b = false;
break;
}
}
if (b) {
arr.push(arr1[i]);
}
}
return arr;
}; utils.diffrence = function (obj1, obj2, reserve, ignore) {
var obj = {}, reserve = reserve || [], ignore = ignore || [], reserveMap = {}, ignoreMap = {};
for (var i in reserve)
reserveMap[reserve[i]] = true; for (var i in ignore)
ignoreMap[ignore[i]] = true; for (var k in obj1) {
if (!ignoreMap[k] && (obj1[k] != obj2[k] || reserveMap[k])) {
obj[k] = obj1[k];
}
}
return obj;
}; utils.filterProperties = function (obj, props, ignore) {
var ret;
if (obj instanceof Array || Object.prototype.toString.call(obj) === "[object Array]") {
ret = [];
for (var k in obj) {
ret.push(utils.filterProperties(obj[k], props, ignore));
}
}
else if (typeof obj === 'object') {
ret = {};
if (ignore) {
var map = {};
for (var k in props)
map[props[k]] = true; for (var i in obj) {
if (!map[i]) ret[i] = obj[i];
}
}
else {
for (var i in props) {
var arr = props[i].split(" as ");
ret[arr[1] || arr[0]] = obj[arr[0]];
}
}
}
else {
ret = obj;
}
return ret;
}; utils.copyProperty = function (obj, sourcePropertyName, newPropertyName, overWrite) {
if (obj instanceof Array || Object.prototype.toString.call(obj) === "[object Array]") {
for (var k in obj)
utils.copyProperty(obj[k], sourcePropertyName, newPropertyName);
}
else if (typeof obj === 'object') {
if (sourcePropertyName instanceof Array || Object.prototype.toString.call(sourcePropertyName) === "[object Array]") {
for (var i in sourcePropertyName) {
utils.copyProperty(obj, sourcePropertyName[i], newPropertyName[i]);
}
}
else if (typeof sourcePropertyName === 'string') {
if ((obj[newPropertyName] && overWrite) || (!obj[newPropertyName]))
obj[newPropertyName] = obj[sourcePropertyName];
}
}
return obj;
}; utils.clearIframe = function (context) {
var frame = $('iframe', context).add(parent.$('iframe', context));
if (frame.length > 0) {
frame[0].contentWindow.document.write('');
frame[0].contentWindow.close();
frame.remove();
if ($.browser.msie) {
CollectGarbage();
}
}
}; utils.getThisIframe = function () {
if (!parent) return null;
var iframes = parent.document.getElementsByTagName('iframe');
if (iframes.length == 0) return null;
for (var i = 0; i < iframes.length; ++i) {
var iframe = iframes[i];
if (iframe.contentWindow === self) {
return iframe;
}
}
return null;
} utils.functionComment = function (fn) {
return fn.toString().replace(/^.*\r?\n?.*\/\*|\*\/([.\r\n]*).+?$/gm, '');
}; utils.uuid = (function () { var a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); return function (b, f) { var h = a, e = [], d = Math.random; f = f || h.length; if (b) { for (var c = 0; c < b; c++) { e[c] = h[0 | d() * f]; } } else { var g; e[8] = e[13] = e[18] = e[23] = "-"; e[14] = "4"; for (var c = 0; c < 36; c++) { if (!e[c]) { g = 0 | d() * 16; e[c] = h[(c == 19) ? (g & 3) | 8 : g & 15]; } } } return e.join("").toLowerCase(); }; })(); utils.getRequest = function (name, url) {
var url = url || window.location.href;
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.split("?")[1];
strs = str.split("&");
for (var i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
}
}
return theRequest[name];
}; //JOSN数组去重的算法 JS
utils.unique = function (arr) {
var result = [], hash = {};
for (var i = 0, elem; (elem = arr[i]) != null; i++) {
if (!hash[elem]) {
result.push(elem);
hash[elem] = true;
}
}
return result;
} //四舍五入,保留小数位
utils.xround = function (x, num) {
x = Math.round(x * Math.pow(10, num)) / Math.pow(10, num);
return x;
} //获取地址栏参数
utils.GetQueryString = function (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}

共通脚本utils的更多相关文章

  1. 一个共通的viewModel搞定所有的编辑页面-经典ERP录入页面(easyui + knockoutjs + mvc4.0)

    http://www.cnblogs.com/xqin/archive/2013/06/06/3120887.html 前言 我写代码喜欢提取一些共通的东西出来,之前的一篇博客中说了如何用一个共通的v ...

  2. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  3. 一个共通的viewModel搞定所有的分页查询一览及数据导出(easyui + knockoutjs + mvc4.0)

    前言 大家看标题就明白了我想写什么了,在做企业信息化系统中可能大家写的最多的一种页面就是查询页面了.其实每个查询页面,除了条件不太一样,数据不太一样,其它的其实都差不多.所以我就想提取一些共通的东西出 ...

  4. List排序共通代码

    此共通方法可以根据特定字段进行排序 package com.gomecar.index.common.utils; import java.lang.reflect.Method; import ja ...

  5. 共通css初次尝试

    1.网页的主要的html <@fn.html css=["${basePath}/css/help/guideCommon.css${versionControl}"]tit ...

  6. C#验证对象中的属性是否为空的共通方法

    在后台接口处理时,经常需要对请求的参数做验证.因此提取了共通方法,方便进行判断. /// <summary> /// 数据验证工具类 /// </summary> public ...

  7. js中获取URL参数的共通方法getRequest()方法

    getRequest : function() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new ...

  8. STL_容器共通能力

    1. 来自教程: ◆ 所有容器提供的都是值(value)语意,而非引用(reference)语意.容器执行插入元素的操作时,内部实施拷贝动作.所以STL容器内存储的元素必须能够被拷贝(必须提供拷贝构造 ...

  9. 【Python】自动化测试框架-共通方法汇总

    1.滚动滚动条(有的时候页面元素element取得对但是并没有回显正确的数据,可能是因为页面第一次加载很慢,所以页面可能做了滚动到哪里就加载到哪里的效果,此刻我们就需要用到滚动条自动滚动这段代码让页面 ...

随机推荐

  1. 清除被占用的8080端口,否则npm run dev无法正常运行

    解决方案一: 1. 打开git-bash2. 输入:netstat -ano查看所有端口信息,如图,找到端口 8080,以及对应的 PID 3.输入:tskill PID 即可杀死进程 解决方案二: ...

  2. Topshelf:一款非常好用的 Windows 服务开发框架

    背景 多数系统都会涉及到“后台服务”的开发,一般是为了调度一些自动执行的任务或从队列中消费一些消息,开发 windows service 有一点不爽的是:调试麻烦,当然你还需要知道 windows s ...

  3. uWSGI、WSGI和uwsgi

    WSGI wsgi server (比如uWSGI) 要和 wsgi application(比如django )交互,uwsgi需要将过来的请求转给django 处理,那么uWSGI 和 djang ...

  4. python之shell

    import subprocess # 返回命令执行结果 # result = subprocess.call('ls -l', shell=True) # result = subprocess.c ...

  5. SpringBoot系列十:SpringBoot整合Redis

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合 Redis 2.背景 Redis 的数据库的整合在 java 里面提供的官方工具包:jed ...

  6. 自己动手,打造轻量级VSCode/C#环境代替LinqPad

    .Net 的项目都挺重的,一直想找一个轻量级的 CSharp 环境,能像Python那样,选一个文件就能跑的.之前用的是 LinqPad,但它的缺点也很明显: (1)     不付费,自动完成不能用( ...

  7. 全局css控制<td>标签属性

    td { text-align: center; /*设置水平居中*/ vertical-align: middle; /*设置垂直居中*/    height:50px;             / ...

  8. docker私有镜像仓库搭建

    环境:centos7,dockere版本:18.09.0,镜像仓库:v2 docker-registry:192.168.137.101   docker私有仓库服务器 docker-app: 192 ...

  9. SyntaxError: missing ) after argument list

    消息 语法错误: 参数列表后面缺少 ) 错误类型 SyntaxError. 什么地方出错了? 有一个函数在调用时出现错误.这可能是一个错误,丢失运算符或者转义字符等. 示例 因为没有使用 ”+“ 操作 ...

  10. 我遇到的Spring的@Value注解失效问题

    项目使用的是SSM体系,spring的配置如下,配置没问题,因为我发现其他文件中的@Value可以使用,只有一处@Value失效了. spring-servlet.xml <?xml versi ...