123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929 |
- const md = {
-
- empty:(val)=>{
- if(val.length==0||val.replace(/\s/g, "").length==0||!val){
- return true
- }
- // if(isNull(val)||typeof val=='object'&&Object.keys(val).length === 0|| typeof val != "undefined" ){
-
- // }
- },
- isEmpty(str) {
- if (str == null || typeof str == null || str == "" || str == "undefined") {
- return true;
- } else {
- return false;
- }
- },
- /**
- * @removeSpace 检查图片是否存在
- * imgUrl 图片链接
- */
- checkImg: (imgUrl) => {
- if(imgUrl.length<0){
- return false
- }
- var ImgObj = new Image();
- ImgObj.src = imgUrl;
- console.log(ImgObj,(ImgObj.width > 0 && ImgObj.height > 0))
- if (ImgObj.fileSize > 0 || (ImgObj.width > 0 && ImgObj.height > 0)) {
- return true;
- } else {
- return false;
- }
- },
- /**
- * @removeSpace 去空格
- * value 需要清除空格的字符串
- */
- removeSpace: (value) => {
- return value.replace(/\s+/g, "");
- },
- /**
- * @dedupe 数组去重
- * array 数组
- */
- dedupe: (array) => {
- return Array.from(new Set(array))
- },
- /**
- * @dedupe 对象去重
- * obj 对象
- */
- dedupeObject: (obj) => {
- let uniques = [];
- let stringify = {};
- for (let i = 0; i < obj.length; i++) {
- let keys = Object.keys(obj[i]);
- keys.sort(function(a, b) {
- return (Number(a) - Number(b));
- });
- let str = '';
- for (let j = 0; j < keys.length; j++) {
- str += JSON.stringify(keys[j]);
- str += JSON.stringify(obj[i][keys[j]]);
- }
- if (!stringify.hasOwnProperty(str)) {
- uniques.push(obj[i]);
- stringify[str] = true;
- }
- }
- uniques = uniques;
- return uniques;
- },
- /**@unique
- * 去重
- * arr 数组
- */
- unique: (arr) => {
- if (Array.hasOwnProperty('from')) {
- return Array.from(new Set(arr));
- } else {
- var n = {},
- r = [];
- for (var i = 0; i < arr.length; i++) {
- if (!n[arr[i]]) {
- n[arr[i]] = true;
- r.push(arr[i]);
- }
- }
- return r;
- }
- },
- /**
- * @getProperty 获取&设置元素属性
- * el html元素
- * name html元素属性名称
- * val html元素属性名称的值
- */
- getProperty: (el, name, val) => {
- const prefix = 'data-'
- name = prefix + name
- if (val) {
- return el.setAttribute(name, val)
- } else {
- return el.getAttribute(name)
- }
- },
- /**
- * @hasClass 判断是否已存在class
- * el html元素
- * className html class名称
- */
- hasClass: (el, className) => {
- let reg = new RegExp('(^|\\s)' + className + '(\\s|$)')
- return reg.test(el.className)
- },
- /**
- * @addClass 添加class
- * el html元素
- * className html class名称
- */
- addClass: (el, className) => {
- if (this.hasClass(el, className)) {
- return
- }
- let newClass = el.className.split(' ')
- newClass.push(className)
- el.className = newClass.join(' ')
- },
- /**
- * @getHost 获取域名主机
- * url 当前页面地址
- * className html class名称
- */
- getHost: (url) => {
- let host = "null";
- if (typeof url == "undefined" || null == url) {
- url = window.location.href;
- }
- let regex = /^\w+\:\/\/([^\/]*).*/;
- let match = url.match(regex);
- if (typeof match != "undefined" && null != match) {
- host = match[1];
- }
- return host;
- },
- /**
- * @cutstr 截取字符串长度多余用....代替
- * str 字符串
- * len 需要长度
- */
- cutstr: (str, len) => {
- let temp;
- let icount = 0;
- let patrn = /[^\x00-\xff]/;
- let strre = "";
- for (let i = 0; i < str.length; i++) {
- if (icount < len - 1) {
- temp = str.substr(i, 1);
- if (patrn.exec(temp) == null) {
- icount = icount + 1;
- } else {
- icount = icount + 2;
- }
- strre += temp;
- } else {
- break
- }
- }
- return strre + "...";
- },
- /**@fun_date
- * 获取时间区间
- * num 为负数就是日期往前,正数日期往后
- */
- fun_date: (num) => {
- let date1 = new Date();
- //今天时间
- let time1 = date1.getFullYear() + "-" + (date1.getMonth() + 1) + "-" + date1.getDate()
- let date2 = new Date(date1);
- date2.setDate(date1.getDate() + num);
- //num是正数表示之后的时间,num负数表示之前的时间,0表示今天
- let time2 = date2.getFullYear() + "-" + (date2.getMonth() + 1) + "-" + date2.getDate();
- return {
- start: time1,
- end: time2
- };
- },
- /**@isMobile
- * 获取手机;类型
- *callback 判断手机&电脑后的操作 type: function
- */
- isMobile: (callback) => {
- let isMobile1 = {
- Android: function() {
- return navigator.userAgent.match(/Android/i) ? true : false;
- },
- BlackBerry: function() {
- return navigator.userAgent.match(/BlackBerry/i) ? true : false;
- },
- iOS: function() {
- return navigator.userAgent.match(/iPhone|iPad|iPod/i) ? true : false;
- },
- Windows: function() {
- return navigator.userAgent.match(/IEMobile/i) ? true : false;
- },
- any: function() {
- return (isMobile1.Android() || isMobile1.BlackBerry() || isMobile1.iOS() || isMobile1
- .Windows());
- }
- };
- callback(isMobile1)
- },
- /**@decimal
- * 增加小数点后
- * num 修改数值 type: number
- * digit 增加小数后几位 type: number
- */
- decimal: (num, digit) => {
- if (parseInt(num) !== parseFloat(num)) {
- return num
- }
- if (typeof num == 'number') {
- num = num || 0;
- let f = num.toFixed(digit);
- return f
- } else {
- // console.error('请输入数值')
- let f = 0;
- return f.toFixed(digit)
- }
- },
- /**@timeTrans
- * 时间转换
- * time 时间 type: time
- * format 时间类型 type: String ('Y/M/D h:m:s')
- */
- timeTrans: ({
- time,
- format
- }) => {
- let timer = time || new Date();
- let date = new Date(timer);
- let obj = {
- Y: '',
- M: '',
- D: '',
- h: '',
- m: '',
- s: ''
- }
- obj.Y = date.getFullYear();
- obj.M = date.getMonth() + 1;
- obj.M = obj.M < 10 ? "0" + obj.M : obj.M;
- obj.D = date.getDate();
- obj.D = obj.D < 10 ? "0" + obj.D : obj.D;
- obj.h = date.getHours();
- obj.h = obj.h < 10 ? "0" + obj.h : obj.h;
- obj.m = date.getMinutes();
- obj.m = obj.m < 10 ? "0" + obj.m : obj.m;
- obj.s = date.getSeconds();
- obj.s = obj.s < 10 ? "0" + obj.s : obj.s;
- if (format) {
- let str = '';
- for (let index in format) {
- str += `${obj[format[index]] || format[index]}`;
- }
- return str;
- } else {
- return `${obj.Y}-${obj.M}-${obj.D}`
- }
- },
- /**@injectScript
- * 动态引入js
- * src 引入地址 url
- */
- injectScript: (src) => {
- const s = document.createElement('script');
- s.type = 'text/javascript';
- s.async = true;
- s.src = src;
- const t = document.getElementsByTagName('script')[0];
- t.parentNode.insertBefore(s, t);
- },
- /**@download
- * 根据url地址下载
- * src 地址 url
- */
- download: (url) => {
- var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
- var isSafari = navigator.userAgent.toLowerCase().indexOf('safari') > -1;
- if (isChrome || isSafari) {
- var link = document.createElement('a');
- link.href = url;
- if (link.download !== undefined) {
- var fileName = url.substring(url.lastIndexOf('/') + 1, url.length);
- link.download = fileName;
- }
- if (document.createEvent) {
- var e = document.createEvent('MouseEvents');
- e.initEvent('click', true, true);
- link.dispatchEvent(e);
- return true;
- }
- }
- if (url.indexOf('?') === -1) {
- url += '?download';
- }
- window.open(url, '_self');
- return true;
- },
- /**@getScrollPosition
- * 获取滚动的坐标
- */
- getScrollPosition: (el = window) => ({
- x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,
- y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop
- }),
- /**@scrollToTop
- * 滚动到顶部
- */
- scrollToTop: () => {
- const c = document.documentElement.scrollTop || document.body.scrollTop;
- if (c > 0) {
- window.requestAnimationFrame(this.scrollToTop);
- window.scrollTo(0, c - c / 8);
- }
- },
- /**@elementIsVisibleInViewport
- * el是否在视口范围内
- * el 为div视图
- */
- elementIsVisibleInViewport: (el, partiallyVisible = false) => {
- const {
- top,
- left,
- bottom,
- right
- } = el.getBoundingClientRect();
- const {
- innerHeight,
- innerWidth
- } = window;
- return partiallyVisible ?
- ((top > 0 && top < innerHeight) || (bottom > 0 && bottom < innerHeight)) &&
- ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth)) :
- top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth;
- },
- /**@shuffle
- * 洗牌算法随机
- * arr 需要随机排序的数组
- */
- shuffle: (arr) => {
- var result = [],
- random;
- while (arr.length > 0) {
- random = Math.floor(Math.random() * arr.length);
- result.push(arr[random])
- arr.splice(random, 1)
- }
- return result;
- },
- /**@copyTextToClipboard
- * 劫持粘贴板
- * value
- */
- copyTextToClipboard: (value) => {
- var textArea = document.createElement("textarea");
- textArea.style.background = 'transparent';
- textArea.value = value;
- document.body.appendChild(textArea);
- textArea.select();
- try {
- var successful = document.execCommand('copy');
- } catch (err) {
- console.log('Oops, unable to copy');
- }
- document.body.removeChild(textArea);
- },
- /**@random
- * 随机数范围
- * min 最小的数
- * max 最大的数
- */
- random: function(min, max) {
- if (arguments.length === 2) {
- return Math.floor(min + Math.random() * ((max + 1) - min))
- } else {
- return null;
- }
- },
- /**@numberToChinese
- * 将阿拉伯数字翻译成中文的大写数字
- * num 数字
- */
- numberToChinese: (num) => {
- var AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十");
- var BB = new Array("", "十", "百", "仟", "萬", "億", "点", "");
- var a = ("" + num).replace(/(^0*)/g, "").split("."),
- k = 0,
- re = "";
- for (var i = a[0].length - 1; i >= 0; i--) {
- switch (k) {
- case 0:
- re = BB[7] + re;
- break;
- case 4:
- if (!new RegExp("0{4}//d{" + (a[0].length - i - 1) + "}$")
- .test(a[0]))
- re = BB[4] + re;
- break;
- case 8:
- re = BB[5] + re;
- BB[7] = BB[5];
- k = 0;
- break;
- }
- if (k % 4 == 2 && a[0].charAt(i + 2) != 0 && a[0].charAt(i + 1) == 0)
- re = AA[0] + re;
- if (a[0].charAt(i) != 0)
- re = AA[a[0].charAt(i)] + BB[k % 4] + re;
- k++;
- }
- if (a.length > 1) // 加上小数部分(如果有小数部分)
- {
- re += BB[6];
- for (var i = 0; i < a[1].length; i++)
- re += AA[a[1].charAt(i)];
- }
- if (re == '一十')
- re = "十";
- if (re.match(/^一/) && re.length == 3)
- re = re.replace("一", "");
- return re;
- },
- /**@contains
- * 判断一个元素是否在数组中
- * arr 数组
- * val 元素
- */
- contains: (arr, val) => {
- return arr.indexOf(val) != -1 ? true : false;
- },
- /**@sort
- * 数组排序
- * {type} 1:从小到大 2:从大到小 3:随机
- * arr 数组
- */
- sort: (arr, type) => {
- return arr.sort((a, b) => {
- switch (type) {
- case 1:
- return a - b;
- case 2:
- return b - a;
- case 3:
- return Math.random() - 0.5;
- default:
- return arr;
- }
- })
- },
- /**@union
- * 两个集合的并集
- * a, b 数组
- */
- union: function(a, b) {
- var newArr = a.concat(b);
- return this.unique(newArr);
- },
- /**@intersect
- * 求两个集合的交集
- * a, b 数组
- */
- intersect: (a, b) => {
- var _this = this;
- a = this.unique(a);
- return this.map(a, function(o) {
- return _this.contains(b, o) ? o : null;
- });
- },
- /**@removearr
- * 删除其中一个元素
- * ele 元素
- * arr 数组
- */
- removearr: (arr, ele) => {
- var index = arr.indexOf(ele);
- if (index > -1) {
- arr.splice(index, 1);
- }
- return arr;
- },
- /**@formArray
- * 将类数组转换为数组
- * ary 类数组
- */
- formArray: (ary) => {
- var arr = [];
- if (Array.isArray(ary)) {
- arr = ary;
- } else {
- arr = Array.prototype.slice.call(ary);
- };
- return arr;
- },
- /**@max
- * 数组中最大值
- * arr 数组
- */
- max: (arr) => {
- return Math.max.apply(null, arr);
- },
- /**@min
- * 数组中最小值
- * arr 数组
- */
- min: (arr) => {
- return Math.min.apply(null, arr);
- },
- /**@sum
- * 数组中 和
- * arr 数组
- */
- sum: (arr) => {
- return arr.reduce((pre, cur) => {
- return pre + cur
- })
- },
- /**@average
- * 数组中 平均值
- * arr 数组
- */
- average: (arr) => {
- return this.sum(arr) / arr.length
- },
- /**@isObjectEqual
- * 数判断两个对象是否键值相同
- * a, b 对象
- */
- isObjectEqual: (a, b) => {
- var aProps = Object.getOwnPropertyNames(a);
- var bProps = Object.getOwnPropertyNames(b);
- if (aProps.length !== bProps.length) {
- return false;
- }
- for (var i = 0; i < aProps.length; i++) {
- var propName = aProps[i];
- if (a[propName] !== b[propName]) {
- return false;
- }
- }
- return true;
- },
- /**@throttle
- * 节流函数--规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
- * fun 监控的函数
- * delay 触发时间
- */
- throttle: (fun, delay) => {
- let last, deferTimer
- return function(args) {
- let that = this
- let _args = args
- let now = +new Date()
- if (last && now < last + delay) {
- clearTimeout(deferTimer)
- deferTimer = setTimeout(function() {
- last = now
- fun.apply(that, _args)
- }, delay)
- } else {
- last = now
- fun.apply(that, _args)
- }
- }
- },
- /**@debouncer
- * 防抖
- * fn 方法
- * w 间隔时间
- * im true 直接触发,false定时触发
- */
- debouncer: (fn, w, im) => {
- var T;
- return function() {
- var t = this;
- let a = arguments;
- if (T) clearTimeout(T);
- if (im) {
- // 如果已经执行过,不再执行
- var cN = !T;
- T = setTimeout(function() {
- T = null;
- }, w)
- if (cN) fn.apply(t, a)
- } else {
- T = setTimeout(function() {
- fn.apply(t, a)
- }, w);
- }
- }
- },
- /**@ArrayObjSort
- * 数组对象排序
- * ArrayObj 数组对象
- * key 对象中的key
- * sequence 排序方法 'a-b','b-a'
- */
- ArrayObjSort: (ArrayObj, key, sequence) => {
- function sortkey(a, b) {
- switch (sequence) {
- case 'a-b':
- return a[key] - b[key];
- case 'b-a':
- return b[key] - a[key];
- }
- }
- ArrayObj.sort(sortkey);
- return ArrayObj;
- },
- /**@randomString
- * 获取唯一值
- *
- */
- uniqueStr: () => {
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
- var r = Math.random() * 16 | 0,
- v = c == 'x' ? r : (r & 0x3 | 0x8);
- return v.toString(16);
- });
- },
- /**@randomString
- * 获取随机值
- * e 随机值的长度
- */
- randomStr: (e) => {
- // let dateStr = Date.now();//13
- e = e || 32;
- var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789",
- a = t.length,
- n = "";
- for (let i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a));
- return n //+dateStr
- }
- }
- //验证规则
- const regExp = {
- //手机
- phone: (s) => {
- return /^(1[3-9])\d{9}$/.test(s)
- },
- //邮箱
- isEmail: (s) => {
- return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
- },
- //手机号码
- isMobile: (s) => {
- return /^1[0-9]{10}$/.test(s)
- },
- //电话号码
- isPhone: (s) => {
- return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
- },
- //是否url地址
- isURL: (s) => {
- return /^http[s]?:\/\/.*/.test(s)
- },
- // 首字母大写
- isCapital: (s) => {
- return /\b[^\Wa-z][^\WA-Z]*\b/g.test(s);
- },
- //是否字符串
- isString: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'String'
- },
- //是否数字
- isNumber: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Number'
- },
- //是否boolean
- isBoolean: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'
- },
- //是否函数
- isFunction: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Function'
- },
- //是否为null
- isNull: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Null'
- },
- //是否undefined
- isUndefined: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'
- },
- //是否对象
- isObj: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Object'
- },
- //是否数组
- isArray: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Array'
- },
- //是否时间
- isDate: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Date'
- },
- //是否正则
- isRegExp: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'
- },
- //是否错误对象
- isError: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Error'
- },
- //是否Symbol函数
- isSymbol: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'
- },
- //是否Promise对象
- isPromise: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'
- },
- //是否Set对象
- isSet: (o) => {
- return Object.prototype.toString.call(o).slice(8, -1) === 'Set'
- },
- //是否是微信浏览器
- isWeiXin: () => {
- var ua = window.navigator.userAgent.toLowerCase();
- return ua.match(/microMessenger/i) == 'micromessenger'
- },
- //是否是移动端
- isDeviceMobile: () => {
- var ua = window.navigator.userAgent.toLowerCase();
- return /android|webos|iphone|ipod|balckberry/i.test(ua)
- },
- //是否是QQ浏览器
- isQQBrowser: () => {
- var ua = window.navigator.userAgent.toLowerCase();
- return !!ua.match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)
- },
- //是否ios
- isIos: () => {
- var u = navigator.userAgent;
- if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) { //安卓手机
- return false
- } else if (u.indexOf('iPhone') > -1) { //苹果手机
- return true
- } else if (u.indexOf('iPad') > -1) { //iPad
- return false
- } else if (u.indexOf('Windows Phone') > -1) { //winphone手机
- return false
- } else {
- return false
- }
- },
- //是否为PC端
- isPC: () => {
- var userAgentInfo = window.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;
- },
- // 严格的身份证校验
- isCardID: (sId) => {
- if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) {
- console.log('你输入的身份证长度或格式错误')
- return false
- }
- //身份证城市
- var aCity = {
- 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: "国外"
- };
- if (!aCity[parseInt(sId.substr(0, 2))]) {
- console.log('你的身份证地区非法')
- return false
- }
- // 出生日期验证
- var sBirthday = (sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2)))
- .replace(/-/g,
- "/"),
- d = new Date(sBirthday)
- if (sBirthday != (d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate())) {
- console.log('身份证上的出生日期非法')
- return false
- }
- // 身份证号码校验
- var sum = 0,
- weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],
- codes = "10X98765432"
- for (var i = 0; i < sId.length - 1; i++) {
- sum += sId[i] * weights[i];
- }
- var last = codes[sum % 11]; //计算出来的最后一位身份证号码
- // console.log(last)
- if (sId[sId.length - 1] != last) {
- console.log('你输入的身份证号非法')
- return false
- }
- return true
- }
- }
- // 获取IP
- const ipurl = 'https://pv.sohu.com/cityjson?ie=utf-8';
- const _try_ = (callback) => {
- try {
- callback()
- } catch (error) {
- // console.log(1);
- // uni ? uni.hideLoading() : alert('未知错误');
- }
- };
- export{
- md, //
- regExp, //验证规则
- ipurl, //ip
- _try_
- }
- // 移动端适配方案
- (function(doc, win) {
- var docEl = doc.documentElement,
- resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
- recalc = function() {
- var clientWidth = docEl.clientWidth;
- var fontSize = 20;
- docEl.style.fontSize = fontSize + 'px';
- var docStyles = getComputedStyle(docEl);
- var realFontSize = parseFloat(docStyles.fontSize);
- var scale = realFontSize / fontSize;
- console.log("realFontSize: " + realFontSize + ", scale: " + scale);
- fontSize = clientWidth / 667 * 20;
- if (isIphoneX()) fontSize = 19;
- fontSize = fontSize / scale;
- docEl.style.fontSize = fontSize + 'px';
- };
- // Abort if browser does not support addEventListener
- if (!doc.addEventListener) return;
- win.addEventListener(resizeEvt, recalc, false);
- doc.addEventListener('DOMContentLoaded', recalc, false);
- // iphoneX判断
- function isIphoneX() {
- return /iphone/gi.test(navigator.userAgent) && (win.screen.height == 812 && win.screen.width == 375)
- }
- })(document, window);
- // (!function (d) {
- // var c = d.document;
- // var a = c.documentElement;
- // var b = d.devicePixelRatio;
- // var f;
- // function e() {
- // var h = a.getBoundingClientRect().width, g;
- // if (b === 1) {
- // h = 720
- // }
- // if (h > 720) h = 720;//设置基准值的极限值
- // g = h / 7.2;
- // a.style.fontSize = g + "px"
- // }
- // if (b > 2) {
- // b = 3
- // } else {
- // if (b > 1) {
- // b = 2
- // } else {
- // b = 1
- // }
- // }
- // a.setAttribute("data-dpr", b);
- // d.addEventListener("resize", function () {
- // clearTimeout(f);
- // f = setTimeout(e, 200)
- // }, false);
- // e()
- // })(window);
|