网页开发一些常用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);
},
};
}();