常用js方法整理common.js

jopen 9年前

项目中常用js方法整理成了common.js

    var h = {};        h.get = function (url, data, ok, error) {            $.ajax({                url: url,                data: data,                dataType: 'json',                success: ok,                error: error            });        }        h.post = function (url, data, ok, error) {            $.ajax({                url: url,                data: data,                type: 'post',                dataType: 'json',                success: ok,                error: error            });        }        //获取url参数        h.url = function (url) {            if (!url) {                url = location.search.substring(1);            } else {                url = url.substr(url.indexOf('?') + 1);            }            var args = new Object();   // 声明并初始化一个 "类"            // 获得地址(URL)"?"后面的字符串.            var query = decodeURI(url);            var pairs = query.split("&");  // 分割URL(别忘了'&'是用来连接下一个参数)            for (var i = 0; i < pairs.length; i++) {                var pos = pairs[i].indexOf('=');                if (pos == -1) continue; // 它在找有等号的 数组[i]                var argname = pairs[i].substring(0, pos); // 参数名字                var value = pairs[i].substring(pos + 1);  // 参数值                // 以键值对的形式存放到"args"对象中                args[argname] = decodeURI(value);            }            return args;        }                // 返回字符串的实际长度, 一个汉字算2个长度         String.prototype.strlen = function () {            return this.replace(/[^\x00-\xff]/g, "**").length;        }        //字符串超出省略        String.prototype.cutstr = function (len) {            var restr = this;            var wlength = this.replace(/[^\x00-\xff]/g, "**").length;            if (wlength > len) {                for (var k = len / 2; k < this.length; k++) {                    if (this.substr(0, k).replace(/[^\x00-\xff]/g, "**").length >= len) {                        restr = this.substr(0, k) + "...";                        break;                    }                }            }            return restr;        }        //替换全部        String.prototype.replaceAll = function (s1, s2) {            return this.replace(new RegExp(s1, "gm"), s2)        }        //字符串去空格        String.prototype.trim = function () {            return this.replace(/(^\s*)|(\s*$)/g, "");        }        String.prototype.trimAll = function () {            return this.replace(/\s+/g, "");        }        String.prototype.lTrim = function () {            return this.replace(/(^\s*)/g, "");        }        String.prototype.rTrim = function () {            return this.replace(/(\s*$)/g, "");        }        //判断是否以某个字符串开头        String.prototype.startWith = function (s) {            return this.indexOf(s) == 0        }        //判断是否以某个字符串结束        String.prototype.endWith = function (s) {            var d = this.length - s.length;            return (d >= 0 && this.lastIndexOf(s) == d)        }                //删除数组中存在重复的元素        function getUnique(someArray) {            tempArray = someArray.slice(0); //复制数组到临时数组            for (var i = 0; i < tempArray.length; i++) {                for (var j = i + 1; j < tempArray.length;) {                    if (tempArray[j] == tempArray[i])                        //后面的元素若和待比较的相同,则删除并计数;                        //删除后,后面的元素会自动提前,所以指针j不移动                    {                        tempArray.splice(j, 1);                    }                    else {                        j++;                    }                    //不同,则指针移动                }            }            return tempArray;        }        //判断数组中是否存在重复的元素        function confirmRepeat(someArray) {            tempArray = someArray.slice(0); //复制数组到临时数组            for (var i = 0; i < tempArray.length; i++) {                for (var j = i + 1; j < tempArray.length;) {                    if (tempArray[j] == tempArray[i])                        //后面的元素若和待比较的相同,则删除并计数;                        //删除后,后面的元素会自动提前,所以指针j不移动                    {                        return true;                    }                    else {                        j++;                    }                    //不同,则指针移动                }            }            return false;        }                //判断某个值是否在数组中        Array.prototype.in_array = function (e) {            for (i = 0; i < this.length; i++) {                if (this[i] == e)                    return true;            }            return false;        }        //判断某个值在数组中的位置        Array.prototype.indexOf = function (e) {            for (i = 0; i < this.length; i++) {                if (this[i] == e)                    return i;            }            return -1;        }                //转义html标签        function HtmlEncode(text) {            return text.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>')        }                //格式化日期 DateFormat('yyyy_MM_dd hh:mm:ss:SS 星期w 第q季度')        function DateFormat(format, date) {            if (!date) {                date = new Date();            }            var Week = ['日', '一', '二', '三', '四', '五', '六'];            var o = {                "y+": date.getYear(), //year                "M+": date.getMonth() + 1, //month                 "d+": date.getDate(), //day                 "h+": date.getHours(), //hour                 "H+": date.getHours(), //hour                "m+": date.getMinutes(), //minute                 "s+": date.getSeconds(), //second                 "q+": Math.floor((date.getMonth() + 3) / 3), //quarter                 "S": date.getMilliseconds(), //millisecond                 "w": Week[date.getDay()]            }            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;        }                //设置cookie值        function setCookie(name, value, Hours) {            var d = new Date();            var offset = 8;            var utc = d.getTime() + (d.getTimezoneOffset() * 60000);            var nd = utc + (3600000 * offset);            var exp = new Date(nd);            exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);            document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"        }        //获取cookie值        function getCookie(name) {            var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));            if (arr != null) return unescape(arr[2]);            return null        }                //加入收藏夹        function AddFavorite(sURL, sTitle) {            try {                window.external.addFavorite(sURL, sTitle)            } catch (e) {                try {                    window.sidebar.addPanel(sTitle, sURL, "")                } catch (e) {                    alert("加入收藏失败,请使用Ctrl+D进行添加")                }            }        }        //设为首页        function setHomepage(homeurl) {            if (document.all) {                document.body.style.behavior = 'url(#default#homepage)';                document.body.setHomePage(homeurl)            } else if (window.sidebar) {                if (window.netscape) {                    try {                        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")                    } catch (e) {                        alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入about:config,然后将项 signed.applets.codebase_principal_support 值该为true");                    }                }                var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);                prefs.setCharPref('browser.startup.homepage', homeurl)            }        }                //跨浏览器绑定事件        function addEventSamp(obj, evt, fn) {            if (!oTarget) { return; }            if (obj.addEventListener) {                obj.addEventListener(evt, fn, false);            } else if (obj.attachEvent) {                obj.attachEvent('on' + evt, fn);            } else {                oTarget["on" + sEvtType] = fn;            }        }        //跨浏览器删除事件        function delEvt(obj, evt, fn) {            if (!obj) { return; }            if (obj.addEventListener) {                obj.addEventListener(evt, fn, false);            } else if (oTarget.attachEvent) {                obj.attachEvent("on" + evt, fn);            } else {                obj["on" + evt] = fn;            }        }                //判断是否移动设备访问        function isMobileUserAgent() {            return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));        }                //完美判断是否为网址        function IsURL(strUrl) {            var regular = /^\b(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!\/~%\$]*)?)$/i            if (regular.test(strUrl)) {                return true;            } else {                return false;            }        }                //获取页面高度        function getPageHeight() {            var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat" ? a : g.documentElement;            return Math.max(f.scrollHeight, a.scrollHeight, d.clientHeight);        }        //获取页面宽度        function getPageWidth() {            var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat" ? a : g.documentElement;            return Math.max(f.scrollWidth, a.scrollWidth, d.clientWidth);        }                //获取页面可视宽度        function getPageViewWidth() {            var d = document, a = d.compatMode == "BackCompat"                            ? d.body                            : d.documentElement;            return a.clientWidth;        }        //获取页面可视高度        function getPageViewHeight() {            var d = document, a = d.compatMode == "BackCompat"                            ? d.body                            : d.documentElement;            return a.clientHeight;        }                //获取页面scrollLeft        function getPageScrollLeft() {            var a = document;            return a.documentElement.scrollLeft || a.body.scrollLeft;        }        //获取页面scrollTop        function getPageScrollTop() {            var a = document;            return a.documentElement.scrollTop || a.body.scrollTop;        }        //获取窗体可见范围的宽与高        function getViewSize() {            var de = document.documentElement;            var db = document.body;            var viewW = de.clientWidth == 0 ? db.clientWidth : de.clientWidth;            var viewH = de.clientHeight == 0 ? db.clientHeight : de.clientHeight;            return Array(viewW, viewH);        }        //随机数时间戳        function uniqueId() {            var a = Math.random, b = parseInt;            return Number(new Date()).toString() + b(10 * a()) + b(10 * a()) + b(10 * a());        }                //获取网页被卷去的位置        function getScrollXY() {            return document.body.scrollTop ? {                x: document.body.scrollLeft,                y: document.body.scrollTop            } : {                x: document.documentElement.scrollLeft,                y: document.documentElement.scrollTop            }        }                //匹配国内电话号码(0511-4405222 或 021-87888822)         function istell(str) {            var result = str.match(/\d{3}-\d{8}|\d{4}-\d{7}/);            if (result == null) return false;            return true;        }        //匹配身份证(15位或18位)         function isidcard(str) {            var result = str.match(/\d{15}|\d{18}/);            if (result == null) return false;            return true;        }        //移动电话        function checkMobile(str) {            if (!(/^1[3|5|8][0-9]\d{4,8}$/.test(str))) {                return false;            }            return true;        }        // 判断输入是否是一个由 0-9 / A-Z / a-z 组成的字符串         function isalphanumber(str) {            var result = str.match(/^[a-zA-Z0-9]+$/);            if (result == null) return false;            return true;        }        // 判断输入是否是有效的电子邮件         function isemail(str) {            var result = str.match(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/);            if (result == null) return false;            return true;        }                //金额大写转换函数 transform('123431233132.23')        function transform(tranvalue) {            try {                var i = 1;                var dw2 = new Array("", "万", "亿"); //大单位                var dw1 = new Array("拾", "佰", "仟"); //小单位                var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //整数部分用                //以下是小写转换成大写显示在合计大写的文本框中                     //分离整数与小数                var source = splits(tranvalue);                var num = source[0];                var dig = source[1];                //转换整数部分                var k1 = 0; //计小单位                var k2 = 0; //计大单位                var sum = 0;                var str = "";                var len = source[0].length; //整数的长度                for (i = 1; i <= len; i++) {                    var n = source[0].charAt(len - i); //取得某个位数上的数字                    var bn = 0;                    if (len - i - 1 >= 0) {                        bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字                    }                    sum = sum + Number(n);                    if (sum != 0) {                        str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面                        if (n == '0') sum = 0;                    }                    if (len - i - 1 >= 0) { //在数字范围内                        if (k1 != 3) { //加小单位                            if (bn != 0) {                                str = dw1[k1].concat(str);                            }                            k1++;                        } else { //不加小单位,加大单位                            k1 = 0;                            var temp = str.charAt(0);                            if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位                                str = str.substr(1, str.length - 1);                            str = dw2[k2].concat(str);                            sum = 0;                        }                    }                    if (k1 == 3) { //小单位到千则大单位进一                        k2++;                    }                }                //转换小数部分                var strdig = "";                if (dig != "") {                    var n = dig.charAt(0);                    if (n != 0) {                        strdig += dw[Number(n)] + "角"; //加数字                    }                    var n = dig.charAt(1);                    if (n != 0) {                        strdig += dw[Number(n)] + "分"; //加数字                    }                }                str += "元" + strdig;            } catch (e) {                return "0元";            }            return str;        }        //拆分整数与小数        function splits(tranvalue) {            var value = new Array('', '');            temp = tranvalue.split(".");            for (var i = 0; i < temp.length; i++) {                value = temp;            }            return value;        }                //格式化数字        function number_format(number, decimals, dec_point, thousands_sep) {            /*           * 参数说明:           * number:要格式化的数字           * decimals:保留几位小数           * dec_point:小数点符号           * thousands_sep:千分位符号           * */            number = (number + '').replace(/[^0-9+-Ee.]/g, '');            var n = !isFinite(+number) ? 0 : +number,                prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),                sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,                dec = (typeof dec_point === 'undefined') ? '.' : dec_point,                s = '',                toFixedFix = function (n, prec) {                    var k = Math.pow(10, prec);                    return '' + Math.ceil(n * k) / k;                };                    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');            var re = /(-?\d+)(\d{3})/;            while (re.test(s[0])) {                s[0] = s[0].replace(re, "$1" + sep + "$2");            }                    if ((s[1] || '').length < prec) {                s[1] = s[1] || '';                s[1] += new Array(prec - s[1].length + 1).join('0');            }            return s.join(dec);        }