通用js函数集锦<来源于网络/自己> 【一】

   通用js函数集锦<来源于网络/自己>【一】  

1、返回一个全地址
2、cookie
3、验证用户浏览器是否是微信浏览器
4、验证用户浏览器是否是微博内置浏览器
5、query string
6、验证用户设备来源
7、JS验证邮件地址是否合法
8、JS获取字符串长度(区分中英文) 中文算2个字,英文一个
9、检查手机号码是否合法
10、验身份证号码是否正确
11、删除cookie
12、数组是否包函字符串元素
13、后退
14、向上滚动到指定位置
15、判断是否为身份证
16、判断是否为2~15字姓名
17、修复IE中 input 的Placeholder文字显示不正常
18、元素上方弹出提示
19、获取验证码按钮倒数
20、格式化数值,小数点后两位数自动补零
21、预加载图片
22、倒计时
23、微信分享
24、输入框特殊过滤字符过滤
25、对Date的扩展,将 Date 转化为指定格式的String
//返回一个全地址
function resolveUrl(url) {
    var a = document.createElement("a");
    a.href = url;
    return a.href;
}

//*************************************************
//*                                               *
//*                      cookie                    *
//*                                               *
//*************************************************
function addcookie(name, value, expireHours) {
    var cookieString = name + "=" + escape(value);
    //判断是否设置过期时间
    expireHours = expireHours || 10000;

    var date = new Date();
    date.setTime(date.getTime() + expireHours * 3600 * 1000);
    cookieString = cookieString + "; expires=" + date.toGMTString() + "; path=/";

    document.cookie = cookieString;
}

function getcookie(name) {
    var strcookie = document.cookie;
    var arrcookie = strcookie.split("; ");
    for (var i = 0; i < arrcookie.length; i++) {
        var arr = arrcookie[i].split("=");
        if (arr[0] == name) return arr[1];
    }
    return "";
}

/**
 * 验证用户浏览器是否是微信浏览器
 * @author    Terence
 *
 * @return    是微信浏览器返回true否则返回false
 */
function isWeiXinFun(){var ua = window.navigator.userAgent.toLowerCase();if(ua.match(/MicroMessenger/i) == 'micromessenger'){return true;}else{return false;}}

/**
 * 验证用户浏览器是否是微博内置浏览器
 * @author    Terence
 *
 * @return    是微博内置浏览器返回true否则返回false
 */
function isWeibo(){var ua = window.navigator.userAgent.toLowerCase();if(ua.match(/weibo/i) == 'weibo'){return true;}else{return false;}}

//*************************************************
//*                                               *
//*                      query string              *
//*                                               *
//*************************************************

function getQueryStringByName(name) {
    var result = this.location.search.match(new RegExp("[\?\&]" + name + "=([^\&]+)", "i"));
    if (result == null || result.length < 1) {
        return "";
    }
    return decodeURIComponent(result[1]);
}


/**
 * 验证用户设备来源
 * @author    Terence
 *
 * @return    object
 */
function userAgent()
{
    var sUserAgent = navigator.userAgent.toLowerCase();

    var o = {};
    o.isIpad = /ipad/i.test(sUserAgent);
    o.isIphone = /iphone os/i.test(sUserAgent);
    o.isUc7 = /rv:1.2.3.4/i.test(sUserAgent);
    o.isUc = /ucweb/i.test(sUserAgent);
    o.isAndroid = /android/i.test(sUserAgent);
    o.isWM = /windows mobile/i.test(sUserAgent);

    o.isPhone = o.isIphone || o.isAndroid || o.isWM || o.isUc7 || o.isUc;
    o.isMobile = o.isIpad || o.isPhone || o.isAndroid;
    o.isPc = !o.isMobile;
    o.isIOS = o.isIpad || o.isIphone;

    return o;
}

/**
 * JS验证邮件地址是否合法
 * @author    Terence
 *
 * @param    email    
 * @return    合法返回true;不合法返回false
 */
function checkEmail(email){
    var re=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; 
    return re.test(email);
}

/**
 * JS获取字符串长度(区分中英文) 中文算2个字,英文一个
 * @author    Terence
 *
 * @param    string    电话号码
 * @return 返回字符串长度
 */
function getStrLength(str){  
    var cArr = str.match(/[^\x00-\xff]/ig);  
    return str.length + (cArr == null ? 0 : cArr.length);  
}

/**
 * 检查手机号码是否合法
 * @author    Terence
 *
 * @param    string    手机号码
 * @return 合法返回true;不合法返回flase
 */
function checkMobile(string){  
  return (/^1[3-9]+\d{9}$/.test(string));
}

/**
 * 验身份证号码是否正确
 * @author    Terence
 *
 * @param    num        身份证号码
 * @return 合法返回true;不合法返回flase
 */
function isIdCardNo(num){
    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    var error;
    var varArray = new Array();
    var intValue;
    var lngProduct = 0;
    var intCheckDigit;
    var intStrLen = num.length;
    var idNumber = num;
    // initialize
    if ((intStrLen != 15) && (intStrLen != 18)) {
        //error = "输入身份证号码长度不对!";
        //alert(error);
        //frmAddUser.txtIDCard.focus();
        return false;
    }
    // check and set value
    for(i=0;i<intStrLen;i++) {
        varArray[i] = idNumber.charAt(i);
        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
            //error = "错误的身份证号码!.";
            //alert(error);
            //frmAddUser.txtIDCard.focus();
            return false;
        } else if (i < 17) {
            varArray[i] = varArray[i]*factorArr[i];
        }
    }
    if (intStrLen == 18) {
        //check date
        var date8 = idNumber.substring(6,14);
        if (IsDate(date8) == false) {
            //error = "身份证中日期信息不正确!.";
            //alert(error);
            return false;
        }
        // calculate the sum of the products
        for(i=0;i<17;i++) {
            lngProduct = lngProduct + varArray[i];
        }
        // calculate the check digit
        intCheckDigit = 12 - lngProduct % 11;
        switch (intCheckDigit) {
            case 10:
                intCheckDigit = 'X';
                break;
            case 11:
                intCheckDigit = 0;
                break;
            case 12:
                intCheckDigit = 1;
                break;
        }
        // check last digit
        if (varArray[17].toUpperCase() != intCheckDigit) {
            //error = "身份证效验位错误!正确为: " + intCheckDigit + ".";
            //alert(error);
            return false;
        }
    }
    else{        //length is 15
        //check date
        var date6 = "19"+idNumber.substring(6,12);
        if (IsDate(date6) == false) {
            //alert("身份证日期信息有误!.");
            return false;
        }
    }
    //alert ("Correct.");
    return true;
}

 

//删除cookie
function delCookie(name){
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval=getcookie(name);
    if(cval!=null) document.cookie= name + "="+cval+"; path=/;expires="+exp.toGMTString();
}
//数组是否包函字符串元素
function contains(arr, str) {
    var i = arr.length;
    while (i--) {
           if (arr[i] === str) {
           return true;
           }
    }
    return false;
}
/*后退*/
function goback() {
    window.history.go(-1);
}

/*向上滚动到指定位置*/
function click_scroll(e) {
    var scroll_offset = $(e).offset();
    $("body,html").animate({
      scrollTop:scroll_offset.top - 10
    },0);
}
/*判断是否为身份证*/
function isIdCardNo(num) {
    var num = num.toUpperCase(),
    len = num.length,
    re;
    if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
        return false;
    }
    else {
        if (len == 15) {
            re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
            splitArr = num.match(re);
            //检查生日日期是否正确 如19850843 或者 20000843
            var dtmBirth = new Date('19' + splitArr[2] + '/' + splitArr[3] + '/' + splitArr[4]);
            if (!((dtmBirth.getYear() == Number(splitArr[2])) && ((dtmBirth.getMonth() + 1) == Number(splitArr[3])) && (dtmBirth.getDate() == Number(splitArr[4])))) {
                //alert('输入的身份证号里出生日期不对!');
                return false;
            }
            else {
                return true;
            }
        }
        else if (len == 18) {
            re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
            var splitArr = num.match(re);
            var dtmBirth = new Date(splitArr[2] + "/" + splitArr[3] + "/" + splitArr[4]);
            if (!((dtmBirth.getFullYear() == Number(splitArr[2])) && ((dtmBirth.getMonth() + 1) == Number(splitArr[3])) && (dtmBirth.getDate() == Number(splitArr[4])))) {
                //alert('输入的身份证号里出生日期不对!');
                return false;
            }
            //检验18位身份证的校验码是否正确。
            //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
            var checkNum;
            var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
            var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
            var nTemp = 0, i;
            for (i = 0; i < 17; i++) {
                nTemp += num.substr(i, 1) * arrInt[i];
            }
            checkNum = arrCh[nTemp % 11];
            if (checkNum != num.substr(17, 1)) {
                //alert('18位身份证的校验码不正确!应该为:' + checkNum);
                return false;
            }
            else {
                return true;
            }
        }

    }
}

/*判断是否为2~15字姓名*/
function isChineseName(name) {
    reg = /^[\u4E00-\u9FA5]{2,15}$/;
    if (!reg.test(name)) {
        return false;
    } else {
        return true;
    }
}

/**
    * nelson
    * 20150810
    * 修复IE中 input 的Placeholder文字显示不正常
    */
function fixedIePlaceholder() {
    var placeholderfriend = {
        focus: function (s) {
            s = $(s).hide().prev().show().focus();
            var idValue = s.attr("id");
            if (idValue) {
                s.attr("id", idValue.replace("placeholderfriend", ""));
            }
            var clsValue = s.attr("class");
            if (clsValue) {
                s.attr("class", clsValue.replace("placeholderfriend", ""));
            }
        }
    }
    //判断是否支持placeholder
    function isPlaceholer() {
        var input = document.createElement('input');
        return "placeholder" in input;
    }
    //不支持的代码
    if (!isPlaceholer()) {
        $(function () {
            var form = $(this);
            //遍历所有文本框,添加placeholder模拟事件
            var elements = form.find("input[type='text'][placeholder]");
            elements.each(function () {
                var s = $(this);
                var pValue = s.attr("placeholder");
                var sValue = s.val();
                if (pValue) {
                    if (sValue == '') {
                        s.val(pValue);
                    }
                }
            });
            elements.focus(function () {
                var s = $(this);
                var pValue = s.attr("placeholder");
                var sValue = s.val();
                if (sValue && pValue) {
                    if (sValue == pValue) {
                        s.val('');
                    }
                }
            });
            elements.blur(function () {
                var s = $(this);
                var pValue = s.attr("placeholder");
                var sValue = s.val();
                if (!sValue) {
                    s.val(pValue);
                }
            });
            //遍历所有密码框,添加placeholder模拟事件
            var elementsPass = form.find("input[type='password'][placeholder]");
            elementsPass.each(function (i) {
                var s = $(this);
                var pValue = s.attr("placeholder");
                var sValue = s.val();
                if (pValue) {
                    if (sValue == '') {
                        //DOM不支持type的修改,需要复制密码框属性,生成新的DOM
                        var html = this.outerHTML || "";
                        html = html.replace(/\s*type=(['"])?password\1/gi, " type=text placeholderfriend")
                          .replace(/\s*(?:value|on[a-z]+|name)(=(['"])?\S*\1)?/gi, " ")
                          .replace(/\s*placeholderfriend/, " placeholderfriend value='" + pValue
                          + "' " + "onfocus='placeholderfriendfocus(this);' ");
                        var idValue = s.attr("id");
                        if (idValue) {
                            s.attr("id", idValue + "placeholderfriend");
                        }
                        var clsValue = s.attr("class");
                        if (clsValue) {
                            s.attr("class", clsValue + "placeholderfriend");
                        }
                        s.hide();
                        s.after(html);
                    }
                }
            });
            elementsPass.blur(function () {
                var s = $(this);
                var sValue = s.val();
                if (sValue == '') {
                    var idValue = s.attr("id");
                    if (idValue) {
                        s.attr("id", idValue + "placeholderfriend");
                    }
                    var clsValue = s.attr("class");
                    if (clsValue) {
                        s.attr("class", clsValue + "placeholderfriend");
                    }
                    s.hide().next().show();
                }
            });
        });
    }
    window.placeholderfriendfocus = placeholderfriend.focus;
}

 

/*****
元素上方弹出提示,详见css与html example showTips("btn", '请输入手机号码', 3); ******
*/ function showTips(o, msg, wait) { em = $(o).parent("li"); if (wait == 0) { em.find(".tips").hide(); } else { if(wait == 3) { em.find(".tips").remove(); $('<div class="tips ui-corner"><p><em>◆</em>'+msg+'</p></div>').appendTo(em); $(".tips").css({'margin-left':($(".tips").width()/2) * (-1)}); } wait--; setTimeout(function() { showTips(o, msg, wait) }, 1000); } } /***
获取验证码按钮倒数 example timer("btn", 60); ******
*/ function timer(o, wait) { if (wait == 0) { o.removeAttr("disabled"); o.removeClass("ui-btn-disabled"); o.val("重新发送"); wait = 60; } else { o.attr("disabled", true); o.addClass("ui-btn-disabled"); o.val(" " + wait + "秒 "); wait--; setTimeout(function() { timer(o, wait) }, 1000) } }
.ui-form li {
    padding: 10px 25px;
    height: 30px;
    position: relative;
    margin: 0 7px;
    border-bottom: 1px solid #e2e2e2;
}
.ui-form li .tips {
    position: absolute;
    top: -33px;
    left: 50%;
    height: 22px;
    line-height: 22px;
    padding: 0 10px;
    font-size: 11px;
    padding: 5px;
    color: #FFF;
    display: inline-block;
    background: #323232;
    width: 150px;
    text-align: center;
}

.ui-corner {
    border-radius: 4px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
}

<li><input type="password" name="password" class="ui-input-text ui-corner" id="PASSWORD" onblur="isPassword(this);" placeholder="密码"></li>

 

//格式化数值,小数点后两位数自动补零
function formatNum(number) {
    var f = parseFloat(number);
    if (isNaN(f)) {
        return false;
    }
    var f = Math.round(number * 100) / 100;
    var s = f.toString();
    var rs = s.indexOf('.');
    if (rs < 0) {
        rs = s.length;
        s += '.';
    }
    while (s.length <= rs + 2) {
        s += '0';
    }
    return s;
}
//预加载图片
function preLoadImages(urls) {//可以是String Array或者String
    var argsLen = arguments.length,
        loadImage = function (url) {
            var img = new Image();
            img.src = url;
        };
    if (argsLen == 1) {
        if (typeof (urls) == "string" && (sLen = urls.length) > 1) {//预加载一个图片
            loadImage(urls);
        }
        else if (Object.prototype.toString.call(arguments[0]) == "[object Array]" && urls.length > 0) {//预加载多个图片
            for (var i = 0; i < urls.length; i++) {
                loadImage(urls[i]);
            }
        }
    }
}

 

/****
闪购商品详细页倒计时函数
time   2015/10/1 10:00:00
id     元素
example countDown("#colockbox1");
<span  data-nowtime="2015/10/22 17:57:52" data-starttime="2015/10/22 18:57:52"  data-endtime="2015/10/23 17:59:52" id="colockbox1"></span>
****/
function countDown(obj, data_nowtime) {
    var COMING = 0,
        ACTIVE = 1,
        DISABLED = -1;
    var This = $(obj),
        ntime = data_nowtime,
        stime = This.attr("data-starttime"),
        etime = This.attr("data-endtime"),
        day_elem = This.find('.day').html("/天"),
        hour_elem = This.find('.hour').html("/小时"),
        minute_elem = This.find('.minute').html("/分"),
        second_elem = This.find('.second').html("/秒");
    var now_time = new Date(ntime).getTime(),
        start_time = new Date(stime).getTime(),
        end_time = new Date(etime).getTime(),
        status = DISABLED;
    if (now_time < start_time) {
        This.find(".coming").show();
        $("#buynow").addClass("disabled").attr("value", "即将开抢").attr("disabled", "disabled");
        $("#addtocart").addClass("disabled").attr("disabled", "disabled");
        end_time = start_time;
        status = COMING;
    } else if (now_time >= start_time && now_time < end_time) {
        This.find(".coming").hide();
        This.find(".due").show();
        status = ACTIVE;
    } else {
        This.remove();
        status = DISABLED;
        return;
    }
    var sys_second = (end_time - now_time) / 1000;
    var timer = setInterval(function () {
        if (sys_second >= 1) {
            sys_second -= 1;
            var day = Math.floor((sys_second / 3600) / 24);
            var hour = Math.floor((sys_second / 3600) % 24);
            var minute = Math.floor((sys_second / 60) % 60);
            var second = Math.floor(sys_second % 60);
            if (parseInt(day) > 0) {
                day_elem.text(day + '天');
                hour_elem.text((hour < 10 ? "0" + hour : hour) + '小时');//计算小时
                minute_elem.text((minute < 10 ? "0" + minute : minute) + '分');//计算分钟
                second_elem.text((second < 10 ? "0" + second : second) + '秒');//计算秒杀                
            } else {
                day_elem.text("0" + '天');
                hour_elem.text((hour < 10 ? hour : hour) + '小时');
                minute_elem.text((minute < 10 ? "0" + minute : minute) + '分');//计算分钟
                second_elem.text((second < 10 ? "0" + second : second) + '秒');//计算秒杀
            }
        } else {
            clearInterval(timer);
            if (status == COMING) {
                $("#buynow").removeClass("disabled").attr("value", "立即购买").attr("disabled", false);
                $("#addtocart").removeClass("disabled").attr("disabled", false);
                countDown(obj, stime);
            }
            if (status == ACTIVE) {
                $("#buynow").addClass("disabled").attr("value", "已结束").attr("disabled", "disabled");
                $("#addtocart").addClass("disabled").attr("disabled", "disabled");
                status == DISABLED;
                This.remove();
            }
        }
    }, 1000);
}

 

function wechatShareData(img,url,title,desc)
{
    try {
         wx.ready(function () {
         var data = {"img":img, "url":url, "title":title, "desc":desc};
         wechatShare(data); 
         });
    }catch(e) {
    }
}

 

//输入框特殊过滤字符过滤
function filtInputValue(input) {
    var pattern = new RegExp("[%--`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——| {}【】‘’;:”“\"'。,、?]");        //格式 RegExp("[在中间定义特殊过滤字符]")  
    var s = input.value;
    var rs = "";
    for (var i = 0; i < s.length; i++) {
        rs = rs + s.substr(i, 1).replace(pattern, '');
    }
    input.value = rs;
}

 

       // 对Date的扩展,将 Date 转化为指定格式的String
        // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 
        // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
        // 例子: 
        // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
        // (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
        Date.prototype.format = function (fmt) { 
            var o = {
                "M+": this.getMonth() + 1,
                "d+": this.getDate(), 
                "h+": this.getHours(), 
                "m+": this.getMinutes(), 
                "s+": this.getSeconds(), 
                "q+": Math.floor((this.getMonth() + 3) / 3), 
                "S": this.getMilliseconds() 
            };
            if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
            for (var k in o)
                if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
            return fmt;
        }

 

posted @ 2015-09-23 15:26  Fast Mover  阅读(350)  评论(0编辑  收藏  举报
友情链接: A4纸尺寸 | 卡通头像 | +申请友情链接