js常用方法
var Util = function() { if (jQuery) { $.ajaxSetup({ complete : function(XHR, TS) { filterAjaxError(XHR, TS); } }); } /** * 拦截ajax错误请求的信息 * @returns */ function filterAjaxError(XHR, TS) { if (XHR.responseJSON && XHR.responseJSON.err == 202) { window.location.href = CONSTANT.LOGINURL; } } /** ******************日期处理 start************************* */ /** * 格式化日期 * * @param value * @returns {String} */ function dateForamtToString(value, format) { if (!value) { return ""; } return dateFormat(new Date(value), format); } /** * 对Date的扩展,将 Date 转化为指定格式的String 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) */ function dateFormat(date, format) { var o = { "M+" : date.getMonth() + 1, "d+" : date.getDate(), "h+" : date.getHours(), "m+" : date.getMinutes(), "s+" : date.getSeconds(), "q+" : Math.floor((date.getMonth() + 3) / 3), // quarter "S" : date.getMilliseconds() }; format = ((format) ? format : "yyyy-MM-dd"); if (/(y+)/.test(format)) { format = format.replace(RegExp.$1, (date.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; }; /** * 将日期字符串转换为long * @param value 日期字符串 * @returns 时间戳 */ function dateForamtToLong(value){ if(value){ return new Date(value.replace(new RegExp("-", "gm"), "/")).getTime(); } return 0; } /********************日期处理 end**************************/ /** * 判断是否为空对象 */ function isEmptyObject(obj) { for ( var n in obj) { return false } return true; } /** * 统计对象属性个数 */ function countObjectProperty(obj) { var count = 0; for ( var n in obj) { count++; } return count; } /** * 将数字金额进行千位分隔 * @param {Object} number * @param params {precision 小数位,默认取2位小数,formatStr数字为0或空时用指定字符串代替显示,默认'--',params.negColor负数的颜色,默认#D9532C} */ function formatNumber(number, params){ // 判断是否为0,是0则用--代替 if(isNaN(number) || number == "" || number == 0){ if(params && params.formatStr){ return dealwithEmptyContent(number, params.formatStr); } return dealwithEmptyContent(number); } // sign表示是否是正负,正数true,负数false var sign = true; if (number < 0) { sign = false; number = Math.abs(number); } // 判断是否有小数位参数,有取参数值,没有默认显示两位精度 if(params && params.precision != undefined){ if (!isNaN(params.precision)){ number = new Number(number).toFixed(params.precision); } else { number = new Number(number).toFixed(2); } } else { number = new Number(number).toFixed(2); } number = number.toString(); number = number.replace(/\,/g, ""); // 取得小数点的位置 var digit = number.indexOf("."); // 取得小数中的整数部分 var intNum = number.substr(0, digit); var i; var mag = new Array(); var word; // 整数时 if (digit == -1) { // 整数的个数 i = number.length; while (i > 0) { // 每隔3位截取一组数字 word = number.substring(i, i - 3); i -= 3; // 分别将截取的数字压入数组 mag.unshift(word); } number = mag; } else { // 小数时 i = intNum.length; // 除小数外,整数部分的个数 while (i > 0) { word = intNum.substring(i, i - 3); // 每隔3位截取一组数字 i -= 3; mag.unshift(word); } number = mag + number.substring(digit); } // 判断是否是负数,负数加红 if(!sign){ // 负数的颜色 if(params && (params.negColor || params.negColor == '')){ return '<span style="color: ' + params.negColor + ';">-' + number + '</span>'; } return '<span style="color: #D9532C;">-' + number + '</span>'; } return number; } /** * 将空字符串或数字及0用指定字符代替 * @param {Object} value当前值 * @param {Object} formatStr 需要代替的字符串 */ function dealwithEmptyContent(value, formatStr) { if (!value) { if (formatStr) { return formatStr; } return '-'; } return value; } /** * 获取ajax请求失败的信息 * @returns */ function getAjaxErrorResponseContent(XMLHttpRequest, textStatus, errorThrown) { var ajaxErrorContent = ""; if (XMLHttpRequest.status == "200") { if (XMLHttpRequest.responseText == "") { ajaxErrorContent = "服务器无响应! 请联系管理员"; } else { window.location.reload(); } } else if (XMLHttpRequest.status == "403") { ajaxErrorContent = "操作权限不足!"; } else if (XMLHttpRequest.status == "404") { ajaxErrorContent = "请求路径不存在!"; } else if (XMLHttpRequest.status == "405") { ajaxErrorContent = "请求路径错误!"; } else if (XMLHttpRequest.status == "500") { ajaxErrorContent = "服务器内部错误! 请联系管理员"; } else if (XMLHttpRequest.status == "0") { ajaxErrorContent = "服务器无响应! 请联系管理员"; } else { ajaxErrorContent = textStatus; } return ajaxErrorContent; } /** * 获取页面路径参数值 */ function getParams(key) { var result = {}; var paramStr = encodeURI(window.document.location.search); if (paramStr) { paramStr = paramStr.substring(1); var params = paramStr.split('&'); for (var p = 0; p < params.length; p++) { result[params[p].split('=')[0]] = unescape(params[p].split('=')[1]); } } return result[key]; } /** * 获取页面地址参数 * @returns */ function getUrlParams() { var result = {}; var paramStr = encodeURI(window.document.location.search); if (paramStr) { paramStr = paramStr.substring(1); var params = paramStr.split('&'); for (var p = 0; p < params.length; p++) { result[params[p].split('=')[0]] = unescape(params[p].split('=')[1]); } } return result; } /** * 返回字符串的字节数 * @param {Object} str 字符串 */ function getBytesLength(str) { // 在GBK编码里,除了ASCII字符,其它都占两个字符宽 return str.replace(/[^\x00-\xff]/g, 'xx').length; } /** * 截取字节长度,一个汉字两个字节,后面以 .... 显示 * @param {Object} value 当前字符串 * @param {Object} len */ function omittedLongString(str, len) { //字符串字节的长度 var length = getBytesLength(str); if (length > (len + 4)) { // 判断是否全部中文 if (length == 2 * (str.length)) { len = len / 2; } str = str.substr(0, len) + "..."; } return str; } /** * 处理空字符串 * @param {String} 字符串 */ function dealNullStr(str) { if (str == undefined || str.toString().toLocaleLowerCase() == 'null') { return ''; } return str; } return { /** * 将数字金额进行千位分隔 * @param {Object} number * @param params {precision 小数位,默认取2位小数,formatStr数字为0或空时用指定字符串代替显示,默认'--',params.negColor负数的颜色,默认#D9532C} */ formatNumber : function(number, params){ return formatNumber(number, params); }, /** * 格式化日期 * * @param value * @returns {String} */ dateForamtToString : function(value, format) { return dateForamtToString(value, format); }, /** * 将日期字符串转换为long * @param value 日期字符串 * @returns 时间戳 */ dateForamtToLong : function(value) { return dateForamtToLong(value); }, getAjaxErrorResponseContent : function(XMLHttpRequest, textStatus, errorThrown) { return getAjaxErrorResponseContent(XMLHttpRequest, textStatus, errorThrown); }, /** * 判断是否为空对象 */ isEmptyObject : function(obj) { return isEmptyObject(obj); }, /** * 统计对象属性个数 */ countObjectProperty : function(obj) { return countObjectProperty(obj); }, /** * 获取页面路径参数值 */ getParams : function(key) { return getParams(key); }, /** * 获取页面路径参数值 */ getUrlParams : function() { return getUrlParams(); }, /** * 截取字节长度,一个汉字两个字节,后面以 .... 显示 * @param {Object} value 当前字符串 * @param {Object} len */ omittedLongString : function(str, len) { return omittedLongString(str, len); }, dealNullStr : function(str) { return dealNullStr(str); }, }; }();