js工具箱

js工具箱

1、判断浏览器的innerText或textContent属性
	function setcontent(element,content){
	    if(typeof element.innerText === "string"){
	        return element.innerText = content;
	    }else {
	        return element.textContent = content;
	    }
	};
	2、获取页面的当中可视区域的宽高度的兼容函数
	function getClient(){
	    return {
	        width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0,
	        height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0
	    }
	};
	3、获取下一个兄弟元素的兼容函数
	function getEleSibling(element){
	    if(element.nextElementSibling){
	        return element.nextElementSibling;
	    }else {
	        var next = element.nextSibling;
	        while(next && next.nodeType !== 1){
	            next = next.nextSibling
	        }
	        return next;
	    }
	};
	4、获取上一个兄弟元素的兼容函数
	function setprev(element){
	    if(element.previousElementSibling){
	        return element.previousElementSibling;
	    }else {
	        var prev = element.previousSibling;
	        while(prev && prev.nodeType !== 1){
	            prev = prev.previousSibling;
	        }
	        return prev;
	    };
	};
	5、获取类名的兼容函数
	function getClassName(ele,className){
	    if(ele.getElementsByClassName){
	        return ele.getElementsByClassName(className);
	    }else {
	        var elements = ele.getElementsByTagName("*");
	        var arr = [];
	        for (var i = 0; i < elements.length; i++) {
	            if(elements[i].className.indexOf(className) !== -1){
	                arr.push(elements[i]);
	            }
	        }
	        return arr;
	    }
	};
	6、匀速动画的封装函数
	function animate(Obj,target){
	    clearInterval(Obj.timer);
	    Obj.timer = setInterval(function(){
	        var leader = Obj.offsetLeft,
	        step = 10,
	        step = leader < target ? step : -step;
	        if(Math.abs(leader - target) > Math.abs(step)){
	            Obj.style.left = leader + step + "px";
	        }else {
	            Obj.style.left = target + "px";
	            clearInterval(Obj.timer);
	        }
	    },15)
	};
	7、获取页面被卷去的头部高度和左侧宽度的 兼容函数
	function scroll(){
	    return {
	        top : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0,
	        left : window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0
	    }
	};
	9、获取外部样式的兼容函数
	function getStyle(obj,attr){
	    if(window.getComputedStyle){
	        return window.getComputedStyle(obj,null)[attr];
	    }else {
	        return obj.currentStyle[attr];
	    }
	};
	10、用缓动动画封装一个回调函数(包含透明度和层级)
	function setanimate3(obj,josn,fn){
	    clearInterval(obj.timer);
	    obj.timer = setInterval(function(){
	        var flag = true;
	        for(var key in josn){
	            if(key === "opacity"){
	                var leader = getStyle(obj,key) * 100;
	                var step = (josn[key] * 100 - leader) / 10;
	                step = step > 0 ? Math.ceil(step) : Math.floor(step);
	                obj.style[key] = (leader + step) / 100;
	            }else if(key === "zIndex"){
	                obj.style[key] = josn[key];
	            }else {
	                var leader = parseInt(getStyle(obj,key)) || 0;
	                var step = (josn[key] - leader) / 10;
	                step = step > 0 ? Math.ceil(step) : Math.floor(step);
	                obj.style[key] = leader + step + "px";
	            }
	            if(josn[key] !== leader){
	                flag = false;
	            }
	        }
	        if(flag){
	            clearInterval(obj.timer);
	            if(fn){
	                fn();
	            }
	        }
	    },15)
	};
	function getStyle(obj,attr){
	    if(window.getComputedStyle){
	        return window.getComputedStyle(obj,null)[attr];
	    }else {
	        return obj.currentStyle[attr];
	    }
	};
	11、设置全屏的能力检测
	btn1.onclick=function(){
	    //全屏
	    if(div.requestFullScreen){
	        div.requestFullScreen();
	    }else if(div.webkitRequestFullScreen){
	        div.webkitRequestFullScreen();
	    }else if(div.mozRequestFullScreen){
	        div.mozRequestFullScreen();
	    }else if(div.msRequestFullScreen){
	        div.msRequestFullScreen();
	    } else if(div.oRequestFullScreen){
	        div.oRequestFullScreen();
	    }
	};
	btn2.onclick=function(){
	    //退出全屏
	    if(document.cancelFullScreen){
	        document.cancelFullScreen();
	    }else if(document.webkitCancelFullScreen){
	        document.webkitCancelFullScreen();
	    }else if(document.mozCancelFullScreen){
	        document.mozCancelFullScreen();
	    }else if(document.msCancelFullScreen){
	        document.msCancelFullScreen();
	    }else if(document.oCancelFullScreen){
	        document.oCancelFullScreen();
	    }
	};
	btn3.onclick=function(){
	    //检测是否全屏
	    if(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.oFullscreenElement){
	        alert(true);
	    }else {
	        alert(false);
	    }
	};
	12、拖拽任意元素
	//被拖拽元素
	document.ondragstart = function(event){
	    event.dataTransfer.setData("text/html",event.target.id);
	};
	//目标元素
	document.ondragover = function(event){
	    event.preventDefault();
	};
	document.ondrop = function(event){
	    var x = event.dataTransfer.getData("text/html");
	    event.target.appendChild(document.getElementById(x));
	};
	13、模拟jquery的ajax请求文件(跨域(jsonp)和不跨域(json)。
	function ajax(obj){
	    var defaus = {
	        type:"get",
	        url:"#",
	        async:true,
	        data:{},
	        jsonp:"callback",
	        dataType:"text",
	        success:function(data){
	            console.log(data);
	        }
	    };
	    for(var key in obj){
	        defaus[key] = obj[key];
	    };
	    if(defaus.dataType === "jsonp"){
	        ajaxJsonp(defaus);
	    }else {
	        ajaxJson(defaus);
	    };
	    function ajaxJsonp(){
	        var cbName = "jQuery" + ("1.11.1" + Math.random()).replace(/\D/g,"") + "_" + (new Date().getTime());//这里是设置的默认的回调函数名字
	        if(defaus.jsonpCallback){//这里是为了方便设置jsonp的默认名字
	            cbName = defaus.jsonpCallback;
	        };
	        window[cbName] = function(data){//这里就是回调函数,调用方式服务器响应内容来调用,实际上时向window中添加了一个方法,方法名是变量cbname的值
	            try {//用try---finally将请求完数据的script标签从页面中删除
	                defaus.success(data);//这里的data是实参
	            }finally{
	                script.parentNode.removeChild(script);//将请求数据后的script标签删除
	                delete window[cbName];//将添加在window上的自定义方法删除
	            }
	        };
	        var parm = "";
	        for(var key in defaus.data){
	            parm +=  key + "=" + defaus.data[key] + "&";
	        };
	        if(parm){
	            parm += parm.substring(0,parm.length - 1);
	            parm = "&" + parm;
	        };
	        var script = document.createElement("script");
	        script.src = defaus.url + "?" + defaus.jsonp + "=" + cbName + parm;
	        var head = document.getElementsByTagName("head")[0];
	        head.appendChild(script);
	    };
	    function ajaxJson(){
	        var xhr;
	        if(window.XMLHttpRequest){//处理兼容Ajax请求
	            xhr = new XMLHttpRequest();
	        }else {
	            xhr = new ActiveXObject("Microsoft.XMLHTTP");
	        };
	        var parm = "";//将对象形式的参数(实参)转为字符串,
	        for(var key in defaus.data){//这里是用来将(get请求后边要传入的键值对)中的值赋值给parm
	            parm += key + "=" + defaus.data[key] + "&";
	        };
	        if(parm){//如果parm中有值,则将其提取出来,目的是为了去掉最后一个多余的&符号
	            parm = parm.substring(0,parm.length-1);//从0开始截取,截取到最后一个值也可使用substring()方法
	        };
	        if(defaus.type === "get"){//处理get参数
	            defaus.url += "?"+ encodeURI(parm);//这里是为了防止中文乱码的问题。
	        };
	        xhr.open(defaus.type,defaus.url,defaus.async);//设置发送参数
	        var code = null;
	        if(defaus.type === "post"){//处理post参数,且必须设置头信息
	            code = parm;
	            xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	        }
	        xhr.send(code);//执行发送动作
	        //处理同步请求,注意,同步的话就不使用回调函数了
	        if(!defaus.async){
	            if(defaus.dataType === "json"){
	                return JSON.parse(xhr.responseText);
	            }else {
	                return xhr.responseText;
	            };
	        };
	        xhr.onreadystatechange = function(){
	            if(xhr.readyState === 4){
	                if(xhr.status === 200){
	                    var data = xhr.responseText;
	                    if(defaus.dataType === "json"){
	                        data = JSON.parse(data);//注意:使用此方法要引入json.js包(为了适应IE和旧版浏览器);
	                    };
	                    defaus.success(data);
	                };
	            };
	        };
	    }
	};
	14、获取URL地址栏。
	//方法一:正则
	function GetQueryString(name) {
	    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
	    var r = window.location.search.substr(1).match(reg);  //获取url中"?"符后的字符串并正则匹配
	    var context = "";
	    if (r != null)
	        context = r[2];
	    reg = null;
	    r = null;
	    return context == null || context == "" || context == "undefined" ? "" : context;
	};
	//方法二:
	function getSearchString(key) {//key就是要截取的参数的键
	    // 获取URL中?之后的字符
	    var str = location.search;
	    str = str.substring(1,str.length);
	    // 以&分隔字符串,获得类似name=xiaoli这样的元素数组
	    var arr = str.split("&");
	    var obj = new Object();
	    // 将每一个数组元素以=分隔并赋给obj对象    
	    for(var i = 0; i < arr.length; i++) {
	        var tmp_arr = arr[i].split("=");
	        obj[decodeURIComponent(tmp_arr[0])] = decodeURIComponent(tmp_arr[1]);
	    }
	    return obj[key];
	};
	//方法三:
	function getQueryString(name) {
	    try {
	        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
	        var url = location.href.split("?");
	        r = url[1].match(reg);
	        if (r != null) return unescape(r[2]);
	        return "";
	    } catch (e) {
	        return "";
	    }
	};
	15、获取当前日期信息
	function getDayTime() {
	    var d = new Date();
	    var year = d.getFullYear();
	    var month = d.getMonth() + 1;
	    var date = d.getDate();
	    var day = d.getDay();
	    var h = d.getHours();
	    var m = d.getMinutes();
	    var s = d.getSeconds();
	    if (h < 10) { h = "0" + h; }
	    if (m < 10) { m = "0" + m; }
	    if (s < 10) { s = "0" + s; }
	    var week = ["日", "一", "二", "三", "四", "五", "六"];
	    //var str = year + "年" + month + "月" + date + "日&nbsp;星期" + week[day] + "&nbsp;" + h + ":" + m + ":" + s;
	    var str = year + "年" + month + "月" + date + "日&nbsp;&nbsp;星期" + week[day] + "&nbsp;&nbsp;" + h + ":" + m;
	    return str;
	};
	16、按出生日期算年龄
	function birthDataChangeAge(date) {
	    if (date == "" || date == undefined) {
	        return "";
	    }
	    var r = date.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
	    var d = new Date(r[1], r[3] - 1, r[4]);
	    if (r == null) {
	        return false;
	    }
	    else if (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]) {
	        var Y = new Date().getFullYear();
	        return (Y - r[1]);
	    }
	    else {
	        return false;
	    }
	};
	17、18位身份证号验证
	function isIdCard(idcard) {
	    if (idcard.length != 18) {
	        return false
	    }
	    var num = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
	    var total = 0;
	    for (i = 0; i < 17; i++) {
	        total = total + Number(idcard.substring(i, i + 1)) * num[i];
	    }
	    var mod = total % 11;
	    var charx = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
	    if (idcard.substring(17, 18).toUpperCase() == charx[mod]) {
	        console.log("身份证号正确");
	        return true;
	    } else {
	        console.log("身份证号错误");
	        return false
	    }
	};
	18、cookie设置,存取,删除
	//设置cookie
	function setCookie(name, value, seconds) {
	    seconds = seconds || 0; //seconds有值就直接赋值,没有为0,这个根php不一样。
	    var expires = "";
	    if (seconds != 0) { //设置cookie生存时间
	        var date = new Date();
	        date.setTime(date.getTime() + (seconds * 1000));
	        expires = "; expires=" + date.toGMTString();
	    }
	    document.cookie = name + "=" + escape(value) + expires + "; path=/"; //转码并赋值
	};
	//取得cookie
	function getCookie(name) {
	    var nameEQ = name + "=";
	    var ca = document.cookie.split(';'); //把cookie分割成组
	    for (var i = 0; i < ca.length; i++) {
	        var c = ca[i]; //取得字符串
	        while (c.charAt(0) == ' ') { //判断一下字符串有没有前导空格
	            c = c.substring(1, c.length); //有的话,从第二位开始取
	        }
	        if (c.indexOf(nameEQ) == 0) { //如果含有我们要的name
	            return unescape(c.substring(nameEQ.length, c.length)); //解码并截取我们要值
	        }
	    }
	    return false;
	};
	//清除cookie
	function clearCookie(name) {
	    setCookie(name, "", -1);
	};
	19、MD5加密
	function md5(sMessage) {
	    function RotateLeft(lValue, iShiftBits) { return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)); }
	    function AddUnsigned(lX, lY) {
	        var lX4, lY4, lX8, lY8, lResult;
	        lX8 = (lX & 0x80000000);
	        lY8 = (lY & 0x80000000);
	        lX4 = (lX & 0x40000000);
	        lY4 = (lY & 0x40000000);
	        lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
	        if (lX4 & lY4) {
	            return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
	        }
	        if (lX4 | lY4) {
	            if (lResult & 0x40000000) {
	                return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
	            }
	            else {
	                return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
	            }
	        }
	        else {
	            return (lResult ^ lX8 ^ lY8);
	        }
	    }
	    function F(x, y, z) { return (x & y) | ((~x) & z); }
	    function G(x, y, z) { return (x & z) | (y & (~z)); }
	    function H(x, y, z) { return (x ^ y ^ z); }
	    function I(x, y, z) { return (y ^ (x | (~z))); }
	    function FF(a, b, c, d, x, s, ac) {
	        a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
	        return AddUnsigned(RotateLeft(a, s), b);
	    }
	    function GG(a, b, c, d, x, s, ac) {
	        a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
	        return AddUnsigned(RotateLeft(a, s), b);
	    }
	    function HH(a, b, c, d, x, s, ac) {
	        a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
	        return AddUnsigned(RotateLeft(a, s), b);
	    }
	    function II(a, b, c, d, x, s, ac) {
	        a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
	        return AddUnsigned(RotateLeft(a, s), b);
	    }
	    function ConvertToWordArray(sMessage) {
	        var lWordCount;
	        var lMessageLength = sMessage.length;
	        var lNumberOfWords_temp1 = lMessageLength + 8;
	        var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
	        var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
	        var lWordArray = Array(lNumberOfWords - 1);
	        var lBytePosition = 0;
	        var lByteCount = 0;
	        while (lByteCount < lMessageLength) {
	            lWordCount = (lByteCount - (lByteCount % 4)) / 4;
	            lBytePosition = (lByteCount % 4) * 8;
	            lWordArray[lWordCount] = (lWordArray[lWordCount] | (sMessage.charCodeAt(lByteCount) << lBytePosition));
	            lByteCount++;
	        }
	        lWordCount = (lByteCount - (lByteCount % 4)) / 4;
	        lBytePosition = (lByteCount % 4) * 8;
	        lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
	        lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
	        lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
	        return lWordArray;
	    }
	    function WordToHex(lValue) {
	        var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
	        for (lCount = 0; lCount <= 3; lCount++) {
	            lByte = (lValue >>> (lCount * 8)) & 255;
	            WordToHexValue_temp = "0" + lByte.toString(16);
	            WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
	        }
	        return WordToHexValue;
	    }
	    var x = Array();
	    var k, AA, BB, CC, DD, a, b, c, d
	    var S11 = 7, S12 = 12, S13 = 17, S14 = 22;
	    var S21 = 5, S22 = 9, S23 = 14, S24 = 20;
	    var S31 = 4, S32 = 11, S33 = 16, S34 = 23;
	    var S41 = 6, S42 = 10, S43 = 15, S44 = 21;
	    x = ConvertToWordArray(sMessage);
	    a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
	    for (k = 0; k < x.length; k += 16) {
	        AA = a; BB = b; CC = c; DD = d;
	        a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
	        d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
	        c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
	        b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
	        a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
	        d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
	        c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
	        b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
	        a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
	        d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
	        c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
	        b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
	        a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
	        d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
	        c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
	        b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
	        a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
	        d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
	        c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
	        b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
	        a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
	        d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
	        c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
	        b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
	        a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
	        d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
	        c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
	        b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
	        a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
	        d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
	        c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
	        b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
	        a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
	        d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
	        c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
	        b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
	        a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
	        d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
	        c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
	        b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
	        a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
	        d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
	        c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
	        b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
	        a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
	        d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
	        c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
	        b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
	        a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
	        d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
	        c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
	        b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
	        a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
	        d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
	        c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
	        b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
	        a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
	        d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
	        c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
	        b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
	        a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
	        d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
	        c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
	        b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
	        a = AddUnsigned(a, AA); b = AddUnsigned(b, BB);
	        c = AddUnsigned(c, CC); d = AddUnsigned(d, DD);
	    }
	    var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
	    return temp.toUpperCase();
	};
	20、常用正则验证
	function regNum(number){
	    return /[\u4e00-\u9fa5]/.test(number);//密码不能输入中文
	};
	function regIDcard(regIDcard){
	    return /(^\d{18}$)|(^\d{17}(\d|[Xx])$)/.test(regIDcard);//身份证号为字符和数字且为18位
	};
	function regPhone(regPhone){
	    return /^1[34578]\d{9}$/.test(regPhone);//手机号码验证
	};
	function regNumsz(code){
	    return /^\d{4}$/.test(code);//验证码为纯数字
	}
	function regName() {
	    return /^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$|^[\u4E00-\u9FA5A-Za-z]+$|^[A-Za-z]+(·[A-Za-z]+)*$/.test(name);//姓名只能输入汉字或者英文
	};
	function regEmail() {
	    return /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/;//邮箱格式验证
	};
	21、验证码倒计时
	function YZTimeOut() {
	$("#phonenum").attr("disabled", true);
	lgmsgOutTime = null;
	var lgmsgTime = 60;
	//验证码倒计时;
	if (!lgmsgOutTime) {
	    lgmsgOutTime = setInterval(function () {
	        if (lgmsgTime > 0) {
	            lgmsgTime--;
	            $("#plg_timeout").html(lgmsgTime);
	        } else {
	            clearInterval(lgmsgOutTime);
	            lgmsgTime = 60;
	            $("#plg_timeout").html(lgmsgTime);
	            $("#phonenum").removeAttr("disabled");
	            lgmsgOutTime = null;
	        }
	    }, 1000);
	}
	};
	//登录验证码复原(登陆成功后操作)
	function YzmLgReset() {
	    clearInterval(lgmsgOutTime);
	    var lgmsgTime = 60;
	    $("#plg_timeout").html(lgmsgTime);
	    $("#plg_SendCode").show();
	    $("#plg_CountDown").hide();
	    $("#phonenum").removeAttr("disabled");
	    lgmsgOutTime = null;
	};
	22、判断是ios还是安卓系统(浏览器用)
	function IsIos() {
	    var u = navigator.userAgent, app = navigator.appVersion;
	    //苹果
	    if (u.indexOf('AppleWebKit') > -1 && u.indexOf('MicroMessenger') > -1 && u.indexOf('iPhone') > -1 && !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
	        return true;
	    } else {
	        //安卓
	        return false;
	    };
	};
	23、社会统一信用代码校验
	function CheckCreditCode(creditCode, isSubtle) {
	    if (creditCode == null || creditCode == undefined || creditCode == "") return false;
	    if (isSubtle != false) isSubtle = true;
	    if (!isSubtle) creditCode = creditCode.toUpperCase();
	    var Ancode, Ancodevalue, total = 0;
	    var weightedfactors = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];//权
	    var str = '0123456789ABCDEFGHJKLMNPQRTUWXY';
	    for (var i = 0; i < creditCode.length - 1; i++) {
	        Ancode = creditCode.substring(i, i + 1);
	        Ancodevalue = str.indexOf(Ancode);
	        total = total + Ancodevalue * weightedfactors[i];
	    }
	    var logiccheckcode = 31 - total % 31;
	    if (logiccheckcode == 31) {
	        logiccheckcode = 0;
	    }
	    var Str = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,T,U,W,X,Y";
	    var Array_Str = Str.split(',');
	    logiccheckcode = Array_Str[logiccheckcode];
	    var checkcode = creditCode.substring(17, 18);
	    return logiccheckcode == checkcode;
	};
	24、营业执照注册号校验
	function CheckRegCode(regCode) {
	    var result = -1;
	    if (regCode.length > 1) {
	        var ti = 0, si = 0, cj = 0, pj = 10;
	        for (var i = 0; i < regCode.length; i++) {
	            ti = parseInt(regCode.substring(i, i + 1));
	            si = pj + ti;
	            cj = (0 == si % 10 ? 10 : si % 10) * 2;
	            pj = (cj % 11) == 0 ? 10 : (cj % 11);
	            if (i == regCode.length - 1) {
	                if (regCode.length == 14) {
	                    pj = (cj % 11) == 0 ? 10 : (cj % 11);
	                    result = 1 - pj < 0 ? 11 - pj : 1 - pj;
	                } else if (regCode.length == 15) {
	                    result = si % 10;
	                }
	            }
	        }
	    }
	    return result == 1;
	};
	25、组织机构代码校验
	function CheckOrgCode(orgCode, isSubtle) {
	    if (orgCode == null || orgCode == undefined || orgCode == "") return false;
	    if (isSubtle != false) isSubtle = true;
	    if (!isSubtle) orgCode = orgCode.toUpperCase();
	    var ws = [3, 7, 9, 10, 5, 8, 4, 2];
	    var str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	    //判断是否有“-”,如果没有则添加“-”
	    var aaa = orgCode.slice(orgCode.length - 2, orgCode.length - 1);
	    if(aaa != "-"){
	        orgCode = orgCode.slice(0, orgCode.length - 1) + "-" + orgCode.slice(orgCode.length - 1);
	    };
	    if (!/^([0-9A-Z]){8}-[0-9|X]$/.test(orgCode)) return false;
	    var sum = 0;
	    for (var i = 0; i < 8; i++) {
	        var c = orgCode.substring(i, i + 1);
	        //var c = orgCode.ToCharArray()[i];
	        sum += str.indexOf(c) * ws[i];
	    }
	    var c9 = 11 - (sum % 11);
	    var sc9 = c9 + "";
	    if (11 == c9) {
	        sc9 = "0";
	    } else if (10 == c9) {
	        sc9 = "X";
	    }
	    var oc = orgCode.substring(9, 10);
	    return sc9 == oc;
	};
	26、循环获取二级字典
	function getEjVal(dictory, ids) {
	    if (ids != "" && ids != null && ids != undefined) {
	        var arr = ids.split(",");
	        var empty = [];
	        $.each(dictory, function (i, item) {
	            var childs = item.children;
	            //二级循环
	            $.each(childs, function (i, item) {
	                for (var k = 0; k < arr.length; k++) {
	                    if (item.id == arr[k]) {
	                        empty.push(item.value);
	                    };
	                };
	            });
	        });
	        //console.log(empty);
	        return empty.join(",");
	    };
	};
	27、循环获取三级字典
	function getThreeDicoy(dictory,ids) {
	    //一项
	    if (ids != undefined && ids != "" && ids != null) {
	        var idsArr = ids.split(",");
	        var empty = [];
	        //一级循环
	        for (var i = 0; i < dictory.length; i++) {
	            var ejChilds = dictory[i].children;
	            //二级循环
	            for (var j = 0; j < ejChilds.length; j++) {
	                var sjChilds = ejChilds[j].children;
	                //三级循环
	                for (var k = 0; k < sjChilds.length; k++) {
	                    //循环传过来的ID
	                    for (var m = 0; m < idsArr.length; m++) {
	                        if (idsArr[m] == sjChilds[k].id) {
	                            empty.push(sjChilds[k].value);
	                        };
	                    };
	                };
	            };
	        };
	        return empty.join(",");
	    };
	};
	28、兼容ie初始选择框和input框(placeholder提示)
	function InitPlaceholder() {
	    $("select").each(function () {
	        if ($(this).val() == "" || $(this).val() == null) {
	            $(this).css({ "color": "#999999" });
	        } else if ($(this).val() == $(this).attr("placeholder")) {
	            $(this).css({ "color": "#999999" });
	        } else {
	            $(this).css({ "color": "#454545" });
	        }
	    });
	    $("select").change(function () {
	        if ($(this).val() == "") {
	            $(this).css({ "color": "#999999" });
	        } else if ($(this).val() == $(this).attr("placeholder")) {
	            $(this).css({ "color": "#999999" });
	        } else {
	            $(this).css({ "color": "#454545" });
	        }
	    });
	    $("input:button").each(function () {
	        if ($(this).val() == "") {
	            $(this).val($(this).attr("placeholder"))
	            $(this).css({ "color": "#999999" });
	        } else if ($(this).val() == $(this).attr("placeholder")) {
	            $(this).css({ "color": "#999999" });
	        } else {
	            $(this).css({ "color": "#454545" });
	        }
	    });
	    $("input:button").change(function () {
	        if ($(this).val() == "") {
	            $(this).val($(this).attr("placeholder"))
	            $(this).css({ "color": "#999999" });
	        } else if ($(this).val() == $(this).attr("placeholder")) {
	            $(this).css({ "color": "#999999" });
	        } else {
	            $(this).css({ "color": "#454545" });
	        }
	    });
	};
	29.判断是pc还是移动
	function IsPC() {
	   var userAgentInfo = navigator.userAgent;
	   var Agents = ["Android", "iPhone",
	      "SymbianOS", "Windows Phone",
	      "iPad", "iPod"];
	   var flag = true;
	   for (var v = 0; v < Agents.length; v++) {
	      if (userAgentInfo.indexOf(Agents[v]) > 0) {
	         flag = false;
	         break;
	      }
	   }
	   return flag;
	};
	/**
	 * 计算年龄(根据出生日期)
	 * 计算年份->计算月份->计算天数
	 */
	function getDiffYmdBetweenDate(sDate1,sDate2){
	    var fixDate = function(sDate){
	        var aD = sDate.split('-');
	        for(var i = 0; i < aD.length; i++){
	            aD[i] = fixZero(parseInt(aD[i]));
	        }
	        return aD.join('-');
	    };
	    var fixZero = function(n){
	        return n < 10 ? '0'+n : n;
	    };
	    var fixInt = function(a){
	        for(var i = 0; i < a.length; i++){
	            a[i] = parseInt(a[i]);
	        }
	        return a;
	    };
	    var getMonthDays = function(y,m){
	        var aMonthDays = [0,31,28,31,30,31,30,31,31,30,31,30,31];
	        if((y%400 == 0) || (y%4==0 && y%100!=0)){
	            aMonthDays[2] = 29;
	        }
	        return aMonthDays[m];
	    };
	    var checkDate = function(sDate){
	    };
	    var y = 0;
	    var m = 0;
	    var d = 0;
	    var sTmp;
	    var aTmp;
	    sDate1 = fixDate(sDate1);
	    sDate2 = fixDate(sDate2);
	    if(sDate1 > sDate2){
	        sTmp = sDate2;
	        sDate2 = sDate1;
	        sDate1 = sTmp;
	    }
	    var aDate1 = sDate1.split('-');
	        aDate1 = fixInt(aDate1);
	    var aDate2 = sDate2.split('-');
	        aDate2 = fixInt(aDate2);
	    //计算相差的年份
	    /*aTmp = [aDate1[0]+1,fixZero(aDate1[1]),fixZero(aDate1[2])];
	    while(aTmp.join('-') <= sDate2){
	        y++;
	        aTmp[0]++;
	    }*/
	    y = aDate2[0] - aDate1[0];
	    if( sDate2.replace(aDate2[0],'') < sDate1.replace(aDate1[0],'')){
	        y = y - 1;
	    }
	    //计算月份
	    aTmp = [aDate1[0]+y,aDate1[1],fixZero(aDate1[2])];
	    while(true){
	        if(aTmp[1] == 12){
	            aTmp[0]++;
	            aTmp[1] = 1;
	        }else{
	            aTmp[1]++;
	        }
	        if(([aTmp[0],fixZero(aTmp[1]),aTmp[2]]).join('-') <= sDate2){
	            m++;
	        } else {
	            break;
	        }
	    }
	    //计算天数
	    aTmp = [aDate1[0]+y,aDate1[1]+m,aDate1[2]];
	    if(aTmp[1] > 12){
	        aTmp[0]++;
	        aTmp[1] -= 12;
	    }
	    while(true){
	        if(aTmp[2] == getMonthDays(aTmp[0],aTmp[1])){
	            aTmp[1]++;
	            aTmp[2] = 1;
	        } else {
	            aTmp[2]++;
	        }
	        sTmp = ([aTmp[0],fixZero(aTmp[1]),fixZero(aTmp[2])]).join('-');
	        if(sTmp <= sDate2){
	            d++;
	        } else {
	            break;
	        }
	    }
	    return {y:y,m:m,d:d};
	};
	//获取两个日期之间的所有月份(包括区间)
	function getMonthBetween(start, end) {//传入的格式YYYY-MM
	    var result = [];
	    var s = start.split("-");
	    var e = end.split("-");
	    var min = new Date();
	    var max = new Date();
	    min.setFullYear(s[0], s[1] * 1 - 1, 1);//开始日期
	    max.setFullYear(e[0], e[1] * 1 - 1, 1);//结束日期
	    var curr = min;
	    while (curr <= max) {
	        /**
	         * 单返回月份
	         */
	        // var month = curr.getMonth();
	        // result.push(month + 1);
	        // curr.setMonth(month + 1);
	        /**
	         * 返回区间
	         */
	        var month = curr.getMonth();
	        var str = curr.getFullYear()+'-'+(month+1);
	        var s = curr.getFullYear()+'-0';
	        if(str==s){
	            str = curr.getFullYear()+'-1';
	        }
	        //返回区间
	        result.push(str);
	        curr.setMonth(month + 1);
	    };
	    let arr = [];
	    result.forEach(v=>{
	        const day = utility.getLastDay(v);
	        arr.push(v.replace('-','年')+'月1日'+'-'+v.replace('-','年')+'月'+day+'日');
	    })
	    return arr;
	    // return result;//返回月份
	};
	//获取指定月份的最后一天
	function getLastDay(date){
	    let nowyear = new Date(date).getFullYear();//取当前的年份
	    let nowmonth = new Date(date).getMonth()+1;//获取当前月份
	    let nextmonth = nowmonth++;//取下一个月的第一天,方便计算(最后一天不固定)
	    if(nowmonth>12){
	        nextmonth -= 12;//月份减
	        nowyear++;//年份增
	    };
	    var new_date = new Date(nowyear,nextmonth,1);//取当年当月中的第一天
	    return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期
	};
	/**
	 * 将数字转化为大写金额
	 */
	function changeNumMoneyToChinese(money){
	    var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //汉字的数字
	    var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位
	    var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位
	    var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位
	    var cnInteger = "整"; //整数金额时后面跟的字符
	    var cnIntLast = "元"; //整型完以后的单位
	    var maxNum = 999999999999999.9999; //最大处理的数字
	    var IntegerNum; //金额整数部分
	    var DecimalNum; //金额小数部分
	    var ChineseStr = ""; //输出的中文金额字符串
	    var parts; //分离金额后用的数组,预定义    
	    var Symbol="";//正负值标记
	    if (money == "") {
	        return "";
	    }
	
	    money = parseFloat(money);
	    if (money >= maxNum) {
	        alert('超出最大处理数字');
	        return "";
	    }
	    if (money == 0) {
	        ChineseStr = cnNums[0] + cnIntLast + cnInteger;
	        return ChineseStr;
	    }
	    if(money<0)
	    {
	        money=-money;
	        Symbol="负 ";        
	    }
	    money = money.toString(); //转换为字符串
	    if (money.indexOf(".") == -1) {
	        IntegerNum = money;
	        DecimalNum = '';
	    } else {
	        parts = money.split(".");
	        IntegerNum = parts[0];
	        DecimalNum = parts[1].substr(0, 4);
	    }
	    if (parseInt(IntegerNum, 10) > 0) { //获取整型部分转换
	        var zeroCount = 0;
	        var IntLen = IntegerNum.length;
	        for (var i = 0; i < IntLen; i++) {
	            var n = IntegerNum.substr(i, 1);
	            var p = IntLen - i - 1;
	            var q = p / 4;
	            var m = p % 4;
	            if (n == "0") {
	                zeroCount++;
	            }
	            else {
	                if (zeroCount > 0) {
	                    ChineseStr += cnNums[0];
	                }
	                zeroCount = 0; //归零
	                ChineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
	            }
	            if (m == 0 && zeroCount < 4) {
	                ChineseStr += cnIntUnits[q];
	            }
	        }
	        ChineseStr += cnIntLast;
	        //整型部分处理完毕
	    }
	    if (DecimalNum != '') { //小数部分
	        var decLen = DecimalNum.length;
	        for (var i = 0; i < decLen; i++) {
	            var n = DecimalNum.substr(i, 1);
	            if (n != '0') {
	                ChineseStr += cnNums[Number(n)] + cnDecUnits[i];
	            }
	        }
	    }
	    if (ChineseStr == '') {
	        ChineseStr += cnNums[0] + cnIntLast + cnInteger;
	    } else if (DecimalNum == '') {
	        ChineseStr += cnInteger;
	    }
	    ChineseStr = Symbol +ChineseStr;
	    
	    return ChineseStr;
	};
	/*
	*js获取一段字符串中完整的url地址
	*/
	function httpString(s) {
	    //var reg = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g;
	    //var reg = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
	    //var reg=/(http(s)?\:\/\/)?(www\.)?(\w+\:\d+)?(\/\w+)+\.(swf|gif|jpg|bmp|jpeg)/gi;
	    //var reg=/(http(s)?\:\/\/)?(www\.)?(\w+\:\d+)?(\/\w+)+\.(swf|gif|jpg|bmp|jpeg)/gi;
	    //var reg= /^((ht|f)tps?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/;
	    //v = v.replace(reg, "<a href='$1$2'>$1$2</a>"); //这里的reg就是上面的正则表达式
	    //s = s.replace(reg, "$1$2"); //这里的reg就是上面的正则表达式
	    try{
	        var reg= /(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g;
	        s = s.match(reg);
	        // console.log(s)
	        return s[0];
	    }catch(e){}
	};
	/**
	 * 多条件筛选
	 * condition:{name:'掌声',age:'13'}
	 * data:要筛选的数组
	 * 注意:此方式返回的数据是模糊数据,即包含的都算,例如:
	 * arr = [{name:'sales'},{name:'sales_bj'}];
	 * parm = {name:'sales'}
	 * 筛选结束返回为[{name:'sales'},{name:'sales_bj'}]
	 */
	function selectParams(condition, data){
	    return data.filter(item => {
	        return Object.keys(condition).every(key => {
	            return String(item[key]).toLowerCase().includes(
	                String(condition[key]).trim().toLowerCase()
	            )
	        })
	    })
	};
	/**
	 * 将obj对象参数拆分成get请求后的参数
	 */
	function splitObj(obj){
	    obj = JSON.stringify(obj);
	    if(obj=='{}'){
	        return '';
	    };
	    obj = obj.replace(/\{|\}|\'|\"+/g,'');
	    let arr = obj.split(',');
	    for(var i = 0;i<arr.length;i++){
	        arr[i] = arr[i].replace(/\:/g,'=') + '&';
	    };
	    let str = arr.join('');
	    str = str.slice(0,str.length-1);
	    str = '?' + str;
	    return str;
	};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值