var utilSOYA = function () {
return {
replaceToBr: function(str){
return str.replace(/\r\n/g, "
").replace(/\r/g, "
").replace(/\n/g, "
");
},
replaceBr: function(str){
return str.replace(/
/g, "\n").replace(/
/g, "\n").replace(/
/g, "\n").replace(/
/g, "\n");
},
htmlEncode : function(value, quot) {
return !value ? value : String(value).replace(/&/g, "&").replace(/>/g, ">").replace(/").replace(/</g, "<").replace(/"/g, '"').replace(/&/g, "&").replace(/'/g, "'");
},
isUrl: function(url){
return /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/.test(url || '');
},
isNumber: function(s){
var regu = "^[0-9]+$";
var re = new RegExp(regu);
if (s.search(re) != - 1) {
return true;
}
else {
return false;
}
},
getStrLength: function(str){
///获得字符串实际长度,中文2,英文1
///要获得长度的字符串
var realLength = 0, len = str.length, charCode = -1;
for (var i = 0; i < len; i++) {
charCode = str.charCodeAt(i);
if (charCode >= 0 && charCode <= 128)
realLength += 1;
else
realLength += 2;
}
return realLength;
},
convertTime: function(time){
time = parseInt(time, 10);
if (isNaN(time)) {
return '未知';
}
var second = parseInt(time / 1000, 10);
var minute = parseInt(second / 60, 10);
var hour = parseInt(minute / 60, 10);
if (hour) {
minute = parseInt(minute % 60, 10);
second = parseInt(second % 60, 10);
return hour + '小时' + minute + '分' + second + '秒';
}
if (minute) {
second = parseInt(second % 60, 10);
return minute + '分' + second + '秒';
}
return second + '秒';
},
toArray: function(){
var ua = navigator.userAgent.toLowerCase();
var isIE = /msie/.test(ua);
return isIE ? function(a, i, j, res){
res = [];
for (var x = 0, len = a.length; x < len; x++) {
res.push(a[x]);
}
return res.slice(i || 0, j || res.length);
}
: function(a, i, j){
return Array.prototype.slice.call(a, i || 0, j || a.length);
};
}(),
convertUrl: function (url) {
var path = window.path;
// if (!path) {
// throw new Error('请引入公共文件commonCss.jsp');
// }
if (path !== "") {
path = path + "/";
}
else {
path = "/";
}
if (url.substring(0, 1) === "/") {
url = url.substring(1);
}
url = path + url;
return url;
},
/**
* 是否为空
* @param str
*
*/
isNull: function (str) {
if (str == undefined) return true;
if (str == "") return true;
var regu = "^[ ]+$";
var re = new RegExp(regu);
return re.test(str);
},
isMsie: function () {
return /msie/.test(navigator.userAgent.toLowerCase());
},
mail: function (val) {
var ver = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$/;
return ver.test(val);
},
contactNumber: function (val) {
var ver = /^[0-9]{5,11}$/;
return ver.test(val);
},
phone: function (val) {
var ver = /^[0-9]{4}-[0-9]{7}$/;
return ver.test(val);
},
/**
* 5-15位的qq号码
*/
qq: function (val) {
var ver = /^[1-9][0-9]{4,14}$/;
return ver.test(val);
},
/**
* 字母、数字、-_组成
*/
letterDigitLine: function (val) {
var ver = /^[0-9a-zA-Z_\-]{1,}$/;
return ver.test(val);
},
/**
* 钱 最多2位小数点money
*/
isMoney: function (val) {
var ver = /^([1-9][\d]{0,}|0)(\.[\d]{1,2})?$/;
return ver.test(val);
},
isMoneyNoLenth: function (val) {
var ver = /^(([1-9]\d{0,9})|0)(\.\d)?$/;
return ver.test(val);
},
/**
* 依赖jquery-1.4.2
* 依赖jquery.json-2.2,参考http://code.google.com/p/jquery-json/
* 用于将form序列化成json串,并且可以反序列化添充回来
*/
serializeObjectToJson: function (serializeArray) {
/**
* 此方法代码参考:http://css-tricks.com/snippets/jquery/serialize-form-to-json/
*/
var o = {};
var a = serializeArray;
$.each(a, function () {
var _ns = this.name.split(".");
if (_ns.length == 1) {
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 || '';
}
} else {
var cur = o[_ns[0]];
if (cur === undefined) cur = o[_ns[0]] = {};
var len = _ns.length;
for (var i = 1; i < len - 1; i++) {
cur = cur[_ns[i]] = cur[_ns[i]] || {};
}
if (cur[_ns[len - 1]]) {
if (!cur[_ns[len - 1]].push) {
cur[_ns[len - 1]] = [cur[_ns[len - 1]]];
}
cur[_ns[len - 1]].push(this.value || '');
} else {
cur[_ns[len - 1]] = this.value || '';
}
}
});
return o;
// return $.toJSON(o);
},
/**
* 阻止冒泡事件
* @param e
*/
stopPropagation: function (e) {
var event = $.event.fix(e);
event.stopPropagation();
}
};
}();
var JsonUtiSOYA = {
//定义换行符
n: "\n",
//定义制表符
t: "\t",
//转换String
convertToString: function(obj) {
return JsonUtiSOYA.__writeObj(obj, 1);
},
//写对象
__writeObj: function(obj //对象
, level //层次(基数为1)
, isInArray) { //此对象是否在一个集合内
//如果为空,直接输出null
if (obj == null) {
return "null";
}
//为普通类型,直接输出值
if (obj.constructor == Number || obj.constructor == Date || obj.constructor == String || obj.constructor == Boolean) {
var v = obj.toString();
var tab = isInArray ? JsonUtiSOYA.__repeatStr(JsonUtiSOYA.t, level - 1) : "";
if (obj.constructor == String || obj.constructor == Date) {
//时间格式化只是单纯输出字符串,而不是Date对象
return tab + ("\"" + v + "\"");
}
else if (obj.constructor == Boolean) {
return tab + v.toLowerCase();
}
else {
return tab + (v);
}
}
//写Json对象,缓存字符串
var currentObjStrings = [];
//遍历属性
for (var name in obj) {
var temp = [];
//格式化Tab
var paddingTab = JsonUtiSOYA.__repeatStr(JsonUtiSOYA.t, level);
temp.push(paddingTab);
//写出属性名
temp.push(name + " : ");
var val = obj[name];
if (val == null) {
temp.push("null");
}
else {
var c = val.constructor;
if (c == Array) { //如果为集合,循环内部对象
temp.push(JsonUtiSOYA.n + paddingTab + "[" + JsonUtiSOYA.n);
var levelUp = level + 2; //层级+2
var tempArrValue = []; //集合元素相关字符串缓存片段
for (var i = 0; i < val.length; i++) {
//递归写对象
tempArrValue.push(JsonUtiSOYA.__writeObj(val[i], levelUp, true));
}
temp.push(tempArrValue.join("," + JsonUtiSOYA.n));
temp.push(JsonUtiSOYA.n + paddingTab + "]");
}
else if (c == Function) {
temp.push("[Function]");
}
else {
//递归写对象
temp.push(JsonUtiSOYA.__writeObj(val, level + 1));
}
}
//加入当前对象“属性”字符串
currentObjStrings.push(temp.join(""));
}
return (level > 1 && !isInArray ? JsonUtiSOYA.n : "") //如果Json对象是内部,就要换行格式化
+ JsonUtiSOYA.__repeatStr(JsonUtiSOYA.t, level - 1) + "{" + JsonUtiSOYA.n //加层次Tab格式化
+ currentObjStrings.join("," + JsonUtiSOYA.n) //串联所有属性值
+ JsonUtiSOYA.n + JsonUtiSOYA.__repeatStr(JsonUtiSOYA.t, level - 1) + "}"; //封闭对象
},
__isArray: function(obj) {
if (obj) {
return obj.constructor == Array;
}
return false;
},
__repeatStr: function(str, times) {
var newStr = [];
if (times > 0) {
for (var i = 0; i < times; i++) {
newStr.push(str);
}
}
return newStr.join("");
},
evalJSON:function(str){
return eval('(' + str + ')');
}
};
/** trim() method for String */
String.prototype.trim = function () {
return this.replace(/(^\s*)|(\s*$)/g, '');
};
String.format = function(format){
var args = utilSOYA.toArray(arguments, 1);
return format.replace(/\{(\d+)\}/g, function(m, i){
return args[i];
});
}
$.extend({
getUrlVars: function () {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function (name) {
return $.getUrlVars()[name];
}
});