js常用函数收集
// 时间戳转时间
function time(time = +new Date()) { var date = new Date((time + 8 * 3600) * 1000); return date.toJSON().substr(0, 19).replace('T', ' '); }
// 秒转时分秒
function secondToTime (time) { var h = parseInt(time / 3600); var m = parseInt(time % 3600 / 60); var s = parseInt(time % 3600 % 60); return h + '时' + m + '分' + s + '秒'; } function secondToDayTime(time) { var d = parseInt(time / (3600*24)); var h = parseInt( time%(3600*24) / 3600); var m = parseInt(time % 3600 / 60); var s = parseInt(time % 3600 % 60); return d + '天' + h + '时' + m + '分' + s + '秒'; }
//获取url参数
function getValFromUrl(str) { var reg = new RegExp("(^|&)" + str + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return decodeURI(r[2]); return null; }
// 验证手机号码
String.isMobilePhone = function(str) { var a = /^1[3|4|5|7|8][0-9]\d{4,8}$/; return a.test(str); }
// 验证邮箱
String.isEmail = function(str) { var a = /(\S)+[@]{1}(\S)+[.]{1}(\w)+/; return a.test(str); }
//获取浏览器版本
var browser = { versions: function() { var u = navigator.userAgent, app = navigator.appVersion; return { //移动终端浏览器版本信息 trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto') > -1, //opera内核 webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), //是否为移动终端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器 iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器 iPad: u.indexOf('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部 weiXin: u.indexOf('MicroMessenger') > -1 }; }(), language: (navigator.browserLanguage || navigator.language).toLowerCase() }
// 验证身份证号
function checkIdcard(idcard) { var area = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外" } var idcard, Y, JYM; var S, M; var idcard_array = new Array(); idcard_array = idcard.split(""); //地区检验 if (area[parseInt(idcard.substr(0, 2))] == null) return false; //身份号码位数及格式检验 switch (idcard.length) { case 15: if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) { ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/; //测试出生日期的合法性 } else { ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/; //测试出生日期的合法性 } if (ereg.test(idcard)) return false; else return false; break; case 18: //18位身份号码检测 //出生日期的合法性检查 //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8])) if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)) { ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/; //闰年出生日期的合法性正则表达式 } else { ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/; //平年出生日期的合法性正则表达式 } if (ereg.test(idcard)) { //测试出生日期的合法性 //计算校验位 S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3; Y = S % 11; M = "F"; JYM = "10X98765432"; M = JYM.substr(Y, 1); //判断校验位 if (M == idcard_array[17]) return true; //检测ID的校验位 else return false; } else return false; break; default: return false; break; } }
// Cookie 读写
var cookie = { set:function(key,val,time){ var date=new Date(); var expiresDays=time; date.setTime(date.getTime()+expiresDays*24*3600*1000); document.cookie=key + "=" + val +";expires="+date.toGMTString(); }, get:function(key){ var getCookie = document.cookie.replace(/[ ]/g,""); var arrCookie = getCookie.split(";") var tips = ''; for(var i=0;i<arrCookie.length;i++){ var arr=arrCookie[i].split("="); if(key==arr[0]){ tips=arr[1]; break; } } return tips; } }
//简单计算字节长度
String.getBlength = function (str) { for (var i = str.length, n = 0; i--; ) { n += str.charCodeAt(i) > 255 ? 2 : 1; } return n; }
//按指定字节截取字符串
String.cutByte = function(str,len,endstr){ var len = +len ,endstr = typeof(endstr) == 'undefined' ? "..." : endstr.toString(); function n2(a){ var n = a / 2 | 0; return (n > 0 ? n : 1)} //用于二分法查找 if(!(str+"").length || !len || len<=0){return "";} if(this.getBlength(str) <= len){return str;} var lenS = len - this.getBlength(endstr) ,_lenS = 0 , _strl = 0 while (_strl <= lenS){ var _lenS1 = n2(lenS -_strl) _strl += this.getBlength(str.substr(_lenS,_lenS1)) _lenS += _lenS1 } return str.substr(0,_lenS-1) + endstr }
// 全角转半角
function QJtoBJ(transStr) { if ($.trim(transStr) == '') { return ''; } var i; var result = ''; for (i = 0; i < transStr.length; i++) { code = transStr.charCodeAt(i); // “65281”是“!”,“65373”是“}” if (code >= 65281 && code < 65373) // “65248”是转换码距 result += String.fromCharCode(transStr.charCodeAt(i) - 65248); else result += transStr.charAt(i); } return result; }