公用js通用方法underscore-extend.js
(function(window, factory) {
var _;
if(typeof window._ === 'function') {
_ = window._;
} else {
_ = function(obj) {
if (obj instanceof _)
return obj;
if (!(this instanceof _))
return new _(obj);
this._wrapped = obj;
};
}
// AMD module
if( typeof define === 'function' && define.amd ) {
define('util', ['moment'], function(moment) {
factory(_, moment);
return _;
})
} else {
factory(_, moment);
}
}(window, (function(_, moment) {
_.format = function(time, format) {
if(!time) {
return '';
}
if(time.toString().length<13) {
time = time * 1000;
}
return moment(time).format(format);
};
_.formatNow = function(format) {
return moment().format(format);
};
_.formatDate = function(time) {
if(!time) {
return '';
}
if(time.toString().length < 13) {
time = moment.unix(time);
} else {
time = moment(time);
}
return time.format('YYYY-MM-DD');
};
_.formatNowDate = function() {
return moment().format('YYYY-MM-DD');
};
_.formatDateTime = function(time) {
if(!time) {
return '';
}
if(time.toString().length < 13) {
time = moment.unix(time);
} else {
time = moment(time);
}
return time.format('YYYY-MM-DD HH:mm:ss');
};
_.formatNowDateTime = function() {
return moment().format('YYYY-MM-DD HH:mm:ss');
};
/**
* 保留小数位
*/
_.fixed = function(number) {
if (isNaN(number)){
return '0.00';
}
var _sign = (number < 0) ? -1 : 1;
var _pow = Math.pow(10, 2);
return (Math.round(((number * _sign) * _pow).toFixed(2)) /_pow*_sign).toFixed(2);
};
/**
* 截取字符串
*/
_.substring = function(str, start, end) {
if (!str) {
return '';
}
return str.substring(start, end);
};
/**
* 去除HTML标签
*/
_.cutHtmlTag = function(str) {
if (!str) {
return '';
}
return str.replace(/<[^>]+>/g,"");
};
/*返回字符串字节数*/
_.getBytesLength = function(str) {
if (typeof str === 'string')
return str.replace(/[^\x00-\xff]/gi, "--").length;
else
return void 0;
};
/*去掉数组空元素,包括空字符串*/
_.removeEmpty = function(arr) {
try {
for (var i = arr.length - 1; i >= 0; i--) {
if (!arr[i]) {
arr.splice(i, 1);
}
}
return arr;
} catch (e) {
}
return void 0;
}
/*去掉数组重复项*/
_.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;
}
/**
* js截取字符串,中英文都能用 js截取字符串,中英文都能用;如果给定的字符串大于指定长度,截取指定长度返回,否者返回源字符串;字符串,长度
*
* @param str:需要截取的字符串
* @param len:
* 需要截取的长度
*/
_.cutStr = function(str, len) {
if(!len) {
len = 20;
}
if (!str) return '';
if (typeof str !== 'string') {
str = str.toString();
}
var strReg = /[^\x00-\xff]/g;
var _str = str.replace(strReg, "**");
var _len = _str.length;
if (_len > len) {
var _newLen = Math.floor(len / 2);
var _strLen = str.length;
for (var i = _newLen; i < _strLen; i++) {
var _newStr = str.substr(0, i).replace(strReg, "**");
if (_newStr.length >= len) {
str = str.substr(0, i) + "...";
break;
}
}
}
return str;
}
_.cutStrs = function(str, len) {
if(!len) {
len = 20;
}
if (!str) return '';
if (typeof str !== 'string') {
str = str.toString();
}
var strReg = /[^\x00-\xff]/g;
var _str = str.replace(strReg, "**");
var _len = _str.length;
if (_len > len) {
var _newLen = Math.floor(len / 2);
var _strLen = str.length;
for (var i = _newLen; i < _strLen; i++) {
var _newStr = str.substr(0, i).replace(strReg, "**");
if (_newStr.length >= len) {
str = str.substr(0, i);
break;
}
}
}
return str;
}
/*乘法*/
_.accMul = function(arg1, arg2) {
var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
try {m += s1.split(".")[1].length} catch (e) {}
try {m += s2.split(".")[1].length} catch (e) {}
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
}
/*加法*/
_.add = function(arg1, arg2) {
return (arg1-0) + (arg2-0);
}
/*减法*/
_.sub = function(arg1, arg2) {
return (arg1-0) - (arg2-0);
}
/*获取UUID*/
_.uuid = function(){
var uuid = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
uuid[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
uuid[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
uuid[19] = hexDigits.substr((uuid[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-";
return uuid.join("");
}
var xssMap = {
unescapeXSS: {
'>': '>',
'<': '<',
"‘": '\'',
"’": '\'',
'“': '"',
'”': '"',
'\': '\\',
'%': '%'
}
};
var entityXssRegexes = {
unescapeXSS: new RegExp('[><‘’“”\%]', 'g')
};
/*全角字符转成半角字符*/
_.unescapeXSS = function(string) {
if (string == null) return '';
return ('' + string).replace(entityXssRegexes['unescapeXSS'], function(match) {
return xssMap['unescapeXSS'][match];
});
}
/*获取url传递参数*/
_.getRequest = function () {
var url = window.location.search; //获取url中"?"符后的字串
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
var strss = strs[i];
if(strss) {
theRequest[strss.split("=")[0]]=(strss.split("=")[1]);
}
}
}
return theRequest;
}
/*根据参数名获取url传递参数*/
_.getRequestByName = function (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
/*去除字符串两头空格*/
_.trimStr = function (string) {
if(typeof string === 'string'){
return string.replace(/(^\s*)|(\s*$)/g,"");
}
return string;
}
/*判断是否以字符串结尾*/
_.endWith = function(string, str){
var pos = string.lastIndexOf(str);
if(pos === -1){
return false;
}else{
return pos + str.length === string.length;
}
}
/**
* 填充字符
*/
_.fillLeft = function(source,fillChar,length) {
if(null == source){
return '';
} else if (source.length >= length) {
return source;
} else {
var result = '';
var slen = source.length;
while (result.length + slen < length) {
result += fillChar;
}
result += source;
}
return result;
}
/*存Cookie的值*/
_.setCookie = function(name,value,minute) {
var expires = -1;
if(minute) {
var exp = new Date();
exp.setTime(exp.getTime() + minute*60*1000);
expires = exp.toGMTString();
}
document.cookie = name + "="+ escape (value) + ";path=/;expires=" + expires;
}
/*取Cookie的值*/
_.getCookie = function(name) {
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
/*删除Cookie的值*/
_.delCookie = function(name) {
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=_.getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";path=/;expires="+exp.toGMTString();
}
_.fsize = function(bytes) {
if(!bytes) {
return '0 B';
}
var k = 1024,
sizes = ['B','KB', 'MB', 'GB', 'TB'],
i = Math.floor(Math.log(bytes) / Math.log(k));
if(i+1 > sizes.length) {
i = sizes.length-1;
}
return (bytes / Math.pow(k, i)).toFixed(2) + ' ' + sizes[i];
};
/*数字格式化为金额格式*/
_.fmoney = function(s, n) {
n = n > 0 && n <= 20 ? n : 2;
s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
var l = s.split(".")[0].split("").reverse(),
r = s.split(".")[1];
t = "";
for(i = 0; i < l.length; i ++ ) {
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
}
return t.split("").reverse().join("") + "." + r;
}
_.fshortmoney = function(number) {
if (number < 10000) {
return _.fmoney(number) + '元';
} else if (number < 100000000) {
return _.fmoney(number / 10000) + '万元';
} else {
return _.fmoney(number / 100000000) + '亿元';
}
}
/*金额格式化为数字格式*/
_.fnumber = function(money) {
return parseFloat(money.replace(/,/g,''));
}
var fraction = ['角', '分'];
var digit = [
'零', '壹', '贰', '叁', '肆',
'伍', '陆', '柒', '捌', '玖'
];
var unit = [
['元', '万', '亿'],
['', '拾', '佰', '仟']
];
_.digitUppercase = function(n) {
var head = n < 0 ? '欠' : '';
n = Math.abs(n);
var s = '';
for (var i = 0; i < fraction.length; i++) {
s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
}
s = s || '整';
n = Math.floor(n);
for (var i = 0; i < unit[0].length && n > 0; i++) {
var p = '';
for (var j = 0; j < unit[1].length && n > 0; j++) {
p = digit[n % 10] + unit[1][j] + p;
n = Math.floor(n / 10);
}
s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
}
return head + s.replace(/(零.)*零元/, '元')
.replace(/(零.)+/g, '零')
.replace(/^整$/, '零元整');
}
/*
* 对象数组排序比较器
* eg: array.sort(_.by('number'))
* desc:true 降序; false 升序
*/
_.by = function(name,desc) {
return function(o, p) {
var a, b;
if (typeof o === "object" && typeof p === "object" && o && p) {
a = o[name];
b = p[name];
if(a==null)a=0;
if(b==null)b=0;
if (a === b) {
return 0;
}
if (typeof a === typeof b) {
if (desc) {
return a < b ? -1 : 1;
} else {
return a > b ? -1 : 1;
}
}
if (desc) {
return typeof a < typeof b ? -1 : 1;
} else {
return typeof a > typeof b ? -1 : 1;
}
}
else {
throw ("error");
}
}
}
_.dateFormatEN = function(time) {
var dt = new Date(time);
var m = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Spt","Oct","Nov","Dec"];
var w = ["Monday","Tuseday","Wednesday","Thursday","Friday","Saturday","Sunday"];
var d = ["st","nd","rd","th"];
mn=dt.getMonth();
wn=dt.getDay();
dn=dt.getDate();
var dns;
if(((dn%10)<1) ||((dn%10)>3)){
dns=d[3];
}
else
{
dns=d[(dn%10)-1];
if((dn==11)||(dn==12)){
dns=d[3];
}
}
return m[mn]+" "+dn+dns+" " +w[wn-1]+" "+dt.getFullYear();
}
/** form表单数据序列化为JSON数据, 传表单ID */
_.formJson = function(formId) {
var form = $(formId).serializeArray();
var o = {};
$.each(form, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
}
})));

浙公网安备 33010602011771号