文章目录
英文标点符号转换为中文
function repSign(s){
s = s.replace(/([\u4E00-\u9FA5]|^|\n|\r)([\,\.\?\!\:])(?=[\u4E00-\u9FA5]|$|\n|\r)/g,function(u,v,w,x) {
sign = {
',': ',',
'.': '。',
'?': '?',
'!': '!',
':': ':'
};
return sign[w] ? v + sign[w] : u;
});
return s;
}
将时间戳格式化为日期对象
function formatDate(datetime, pattern){
var _d = new Date();
if(typeof datetime == 'object'){
_d = datetime;
}else if(typeof datetime == 'string'){
_d = parseDate(datetime);
}
var y = _d.getFullYear();
var M = _d.getMonth() + 1;
var d = _d.getDate();
var h = _d.getHours();
var m = _d.getMinutes();
var s = _d.getSeconds();
var yyyy = y;
var MM = (M < 10 ? ('0' + M) : M);
var dd = (d < 10 ? ('0' + d) : d);
var HH = (h < 10 ? ('0' + h) : h);
var mm = (m < 10 ? ('0' + m) : m);
var ss = (s < 10 ? ('0' + s) : s);
var fmt = new String(pattern).replace(/yyyy/gi, yyyy).replace(/MM/g, MM).replace(/dd/gi, dd).replace(/HH/gi, HH).replace(/mm/g, mm).replace(/ss/gi, ss);
fmt = fmt.replace(/y/gi, y).replace(/M/g, M).replace(/d/gi, d).replace(/h/gi, h).replace(/m/g, m).replace(/s/gi, s);
return fmt;
}
console.log(formatDate(new Date(),'yyyy-MM-dd hh:mm:ss'))
转化日期字符串
common.parseDate = function parseDate(dateStr){
if(dateStr=='')
return null;
var _dateStr = new String(dateStr).replace(/\-/g, '/').replace(/\.\d+$/, '');
var date = new Date(_dateStr);
if(date.toString() !== 'Invalid Date'){
return date;
}
return null;
}
本地存储
/**
* setLocalStorage
*/
function setLocalStorage(key, value, isJson) {
if (!supportStroage()) {
cpic.alert("暂不支持无痕浏览!");
return;
}
if (window.localStorage) {
if (isJson) {
value = JSON.stringify(value);
}
try {
window.localStorage[key] = value;
} catch (e) {
alert("不支持无痕浏览!");
}
} else {
alert("当前浏览器不支持localStorage");
}
};
/**
* getLocalStorage
*/
function getLocalStorage(key, isJson) {
if (!supportStroage()) {
alert("暂不支持无痕浏览!");
return;
}
if (window.localStorage) {
var value = window.localStorage[key] || "";
if (isJson && value) {
value = JSON.parse(value);
}
return value;
} else {
alert("当前浏览器不支持localStorage");
}
};
/**
* removelocalStorage
*/
function removeLocalStorage(key) {
if (!supportStroage()) {
alert("暂不支持无痕浏览!");
return;
}
if (window.localStorage) {
window.localStorage.removeItem(key);
} else {
alert("当前浏览器不支持localStorage");
}
};
/**
* 判断是否支持无痕Local\sessionStroage
*/
function supportStroage() {
var flag = true;
try {
if (window.localStorage) {
} else {
flag = false;
}
} catch (e) { //对于无痕模式下会出现异常
flag = false;
}
return flag;
};
setLocalStorage('name','xiaoming',true)
console.log(getLocalStorage('name'))
removeLocalStorage('name')
相关校验规则
//校验中英文姓名
function checkName(value){
return (/^[a-zA-Z\u4E00-\u9FA5]+$/g.test(value)||!value);
};
//校验中文姓名
function checkChaName(value){
return (/^[\u4E00-\u9FA5\.·]+$/.test(value)||!value);
}
//校验数字
function checkNumber(value){
return (/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value)||!value);
};
// 验证身份证
function checkIdcard(idcard) {
idcard = idcard.toUpperCase();
var Errors = new Array('验证通过!', '身份证号码位数不对!', '身份证号码出生日期超出范围或含有非法字符!',
'身份证号码校验错误!', '身份证地区非法!');
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 : '台湾',
83 : '台湾',
81 : '香港',
82 : '澳门',
91 : '国外'
};
var Y, JYM;
var S, M;
var idcard_array = new Array();
idcard_array = idcard.split('');
if (area[parseInt(idcard.substr(0, 2))] == null)
return Errors[4];
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 Errors[0];
return true;
else
return Errors[2];
break;
case 18:
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]$/;// 闰年出生日期的合法性正则表达式
eregNow = /^[1-9][0-9]{5}20[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]$/;// 平年出生日期的合法性正则表达式
eregNow = /^[1-9][0-9]{5}20[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) || eregNow.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 Errors[0];
return true;
else
return Errors[3];
} else
return Errors[2];
break;
default:
return Errors[1];
break;
}
};
//对象非空校验
function isEmptyJsonObject(obj){
for(var name in obj){
return false;
}
return true;
}
// 校验地址
function checkAddress(value){
return (/^[0-9a-zA-Z\u4E00-\u9FA5\(\)\(\)\-\#\s]+$/.test(value)||!value);
}
//校验邮编
function checkPostCode(value){
return (/^[0-9]\d{5}$/.test(value)||!value);
}
// 校验手机号
function checkMobile(value){
return (/^(13|14|15|16|17|18|19)\d{9}$/.test(value)||!value);
}
// 校验电话或手机号
function checkPhoneOrMobile(value){
return (/^\(?(0\d{2,3}-?)?\)?\d{7,8}$|^(13|14|15|16|17|18|19)\d{9}$/.test(value.trim())||!value);
}
//校验座机
function checkPhone(value) {
return (/^\(?(0\d{2,3}-?)?\)?\d{7,8}$/.test(value.trim())||!value);
}
数字转换
//价格转成大写
function Money(money) {
this.money = money;
this.strNum = '零壹贰叁肆伍陆柒捌玖'; // 对应中文数字
this.strUnit = '万仟佰拾亿仟佰拾万仟佰拾元角分'; // 对应单位
return this;
}
Money.prototype.format = function() {
var numberValue = new String(Math.round(this.money * 100)); // 数字金额
var chineseValue = ""; // 转换后的中文金额
var len = numberValue.length; // 输入数字的长度
var Ch1; // 数字的中文读法
var Ch2; // 数字位的中文读法
var nZero = 0; // 计算连续的零值的个数
var index; // 指定位置的数值
if (len > 15) {
alert('超出计算范围');
return ;
}
if (numberValue == 0) {
chineseValue == "零元整";
return chineseValue;
}
this.strUnit = this.strUnit.substr(this.strUnit.length - len, len); // 取出对应位数的单位的值
for (var i = 0; i < len; i ++) {
index = parseInt(numberValue.substr(i, 1), 10); // 取出需要转换的某一位的值
if (i != (len - 3) && i != (len - 7) && i != (len - 11) && i != (len - 15)) {
if (index == 0) {
Ch1 = "";
Ch2 = "";
nZero = nZero + 1;
} else if (index != 0 && nZero != 0) {
Ch1 = "零" + this.strNum.substr(index, 1);
Ch2 = this.strUnit.substr(i, 1);
nZero = 0
} else {
Ch1 = this.strNum.substr(index, 1);
Ch2 = this.strUnit.substr(i, 1);
nZero = 0;
}
} else {
if (index != 0 && nZero != 0) {
Ch1 = "零" + this.strNum.substr(index, 1);
Ch2 = this.strUnit.substr(i, 1);
nZero = 0;
} else if (index != 0 && nZero == 0) {
Ch1 = this.strNum.substr(index, 1);
Ch2 = this.strUnit.substr(i, 1);
nZero = 0
} else if (index == 0 && nZero >= 3) {
Ch1 = "";
Ch2 = "";
nZero = nZero + 1;
} else {
Ch1 = "";
Ch2 = this.strUnit.substr(i, 1);
nZero = nZero + 1;
}
if (i == (len - 11) || i == (len - 3)) {
Ch2 = this.strUnit.substr(i, 1)
}
}
chineseValue = chineseValue + Ch1 + Ch2;
}
if (index == 0) {
chineseValue = chineseValue + "整";
}
return chineseValue;
};
console.log(new Money('235624').format())
//百分数转化为小数
function toPoint(percent){
var str=percent.replace("%","");
str= str/100;
return str;
}
//小数转化为百分数
function toPercent(point){
var str=Number(point*100);
str+="%";
return str;
}
获取页面url后面参数的值
/**
* @method 获取页面url后面参数的值
* @param {String} name 参数名
*/
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null)
return unescape(r[2]);
return null;
}
屏幕宽度自适应
/**
* @method 屏幕宽度自适应
* @param {int} scale 比例 默认100
*/
function autoSize(scale, callback) {
/**
* 保存进入页面是的宽度高度和方向
*/
wlScreen.currentHeight = window.innerHeight;
wlScreen.currentWidth = window.innerWidth;
wlScreen.minHeight = wlScreen.currentHeight - 150;//弹起软键盘之后的屏幕阈值 屏幕高度小于该值
wlScreen.landscape = (window.orientation == '0');
wlScreen.orientation = window.orientation;
callback = typeof callback == 'function' ? callback : function () {
};
//屏幕旋转事件 重新获取方向和数值
window.addEventListener('orientationchange' in window ? 'orientationchange' : 'resize', function (e) {
//判断是否为旋转屏幕 只有屏幕旋转才重新记录
if (wlScreen.orientation != window.orientation) {
wlScreen.landscape = (window.orientation == '0');
wlScreen.orientation = window.orientation;
//由于安卓和ios 事件和数值更改的顺序不一样,有可能先触发事件后更改参数,所以增加延时保证新的数据正确
setTimeout(function () {
wlScreen.currentHeight = window.innerHeight;
wlScreen.currentWidth = window.innerWidth;
wlScreen.minHeight = wlScreen.currentHeight - 150;
callback();
}, 1500);
} else {
callback();
}
}, false);
var docEle = document.documentElement;
var initWidth = 640, initSize = 100;
if (!isNaN(scale) && scale > 0)
initSize = scale;
var minWidth = window.screen.width < window.screen.height ? window.screen.width : window.screen.height;
var devicePixelRatio = window.devicePixelRatio;
//部分安卓手机 window.screen.width的实际数值是 window.innerWidth*window.devicePixelRatio
if (window.screen.width / window.innerWidth >= 2) {
var actualWidth = window.screen.width / devicePixelRatio;
var actualHeight = window.screen.height / devicePixelRatio;
minWidth = actualWidth < actualHeight ? actualWidth : actualHeight;
}
if (isPC()) {
var w = minWidth > 640 ? 640 : minWidth;
} else {
w = minWidth;
}
docEle.style.fontSize = w / initWidth * initSize + 'px';
//移除隐藏body 的hide class
var reg = new RegExp('(\\s|^)' + 'hide' + '(\\s|$)');
document.body.className = document.body.className.replace(reg, ' ');
}
百度统计
/**
* @method 百度统计
*/
function baiduCollection() {
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?fda419dfe49b3ec608d0192cc2fc5820";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
}
滚动条相关函数
/**
* 滚动条相关函数
* @property getScrollTop 获取滚动条当前的位置
* @property getClientHeight 获取当前可视范围的高度
* @property getScrollHeight 获取文档完整的高度
*/
var scroll = {
getScrollTop: function () {
var st = 0;
if (document.documentElement && document.documentElement.scrollTop) {
st = document.documentElement.scrollTop;
}
else if (document.body) {
st = document.body.scrollTop;
}
return st;
},
getClientHeight: function () {
var clientHeight = 0;
if (document.body.clientHeight && document.documentElement.clientHeight) {
clientHeight = Math.min(document.body.clientHeight, document.documentElement.clientHeight);
}
else {
clientHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight);
}
return clientHeight;
},
getScrollHeight: function () {
return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
}
}
判断PC 或者是手机平板
/**
* @method 判断PC 或者是手机平板
* @return {boolean}
*/
function isPC() {
var userAgentInfo = navigator.userAgent;
var Agents = ["Android", "Linux", "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;
}
input框输入控制
/**
* 输入控制
*/
var onlyNumber = {
/***
* 输入控制 带小数点
* @param input
*/
decimal: function (input) {
var pos = input.selectionStart, oVal = input.value, nVal = '';
for (var i = 0; i < oVal.length; i++) {
var ch = oVal.substr(i, 1);
ch.match(/^[0-9.]+$/) ? nVal += ch : '';
}
input.value = nVal;
input.selectionStart = pos - (oVal.length - nVal.length);
input.selectionEnd = pos - (oVal.length - nVal.length);
},
/**
* 输入控制 纯数字
* @param input
*/
integer: function (input) {
var pos = input.selectionStart, oVal = input.value, nVal = '';
for (var i = 0; i < oVal.length; i++) {
var ch = oVal.substr(i, 1);
ch.match(/^[0-9]+$/) ? nVal += ch : '';
}
input.value = nVal;
input.selectionStart = pos - (oVal.length - nVal.length);
input.selectionEnd = pos - (oVal.length - nVal.length);
},
/**
* 输入控制 带大小写X 用于身份证
* @param input
* @param isUpper 是否强制大写
*/
andX: function (input, isUpper) {
var pos = input.selectionStart, oVal = input.value, nVal = '';
for (var i = 0; i < oVal.length; i++) {
var ch = oVal.substr(i, 1);
ch.match(/^[0-9Xx]+$/) ? nVal += ch : '';
}
input.value = isUpper ? nVal.toUpperCase() : nVal;
input.selectionStart = pos - (oVal.length - nVal.length);
input.selectionEnd = pos - (oVal.length - nVal.length);
},
/***
* 输入控制 带所有英文字母
* @param input
* @param isUpper 是否强制大写
*/
andChar: function (input, isUpper) {
var pos = input.selectionStart, oVal = input.value, nVal = '';
for (var i = 0; i < oVal.length; i++) {
var ch = oVal.substr(i, 1);
ch.match(/^[0-9a-zA-Z]+$/) ? nVal += ch : '';
}
input.value = isUpper ? nVal.toUpperCase() : nVal;
input.selectionStart = pos - (oVal.length - nVal.length);
input.selectionEnd = pos - (oVal.length - nVal.length);
}
};
点击按钮下载文件
/**
*data:后端接口拿到的文件流
*fileName:文件名称
*/
function fileDownload(data, fileName) {
let blob = new Blob([data], {
type: "application/octet-stream"
})
let filename = fileName || "filename.xlsx";
if (typeof window.navigator.msSaveBlob !== "undefined") {
window.navigator.msSaveBlob(blob, filename);
} else {
var blobURL = window.URL.createObjectURL(blob);
//页面动态创建一个a标签,通过其href方法进行下载
var tempLink = document.createElement("a");
tempLink.style.display = "none";
tempLink.href = blobURL;
tempLink.setAttribute("download", filename);
if (typeof tempLink.download === "undefined") {
tempLink.setAttribute("target", "_blank");
}
document.body.appendChild(tempLink);
tempLink.click();
document.body.removeChild(tempLink);
window.URL.revokeObjectURL(blobURL);
}
}
判断起止期是否小于一年
function isLessOneYear(start_date,end_date){
var start = new Date(start_date);//转换时间格式
var end = new Date(end_date);
var flag = 0;
var all_day = 365;
var time = end.getTime()-start.getTime();//时间差的毫秒数
if(time<=0){
cpic.alert("保险止期不能小于等于保险起期");
return false;
}
//注意同getYear的区别
var startYear = start.getFullYear();
var endYear = end.getFullYear();
var leap_year = "";//代表闰年的2月29日
var leap_time = "";//代表闰年的2月29日与开始时间或结束时间的时间差,大于等于开始时间,或者小于等于结束时间代表在这个日期区间包含闰年的2月29日,一年有366天
//判断年份是否为闰年
if ((startYear % 4 == 0 && startYear % 100 != 0) || (startYear % 100 == 0 && startYear % 400 == 0)) {
flag = 1;
var date = startYear + "/02/29";
leap_year = new Date(startYear + "/02/29");
leap_time = leap_year.getTime()-start.getTime();
//判断日期之间是否包含闰年的2月29日
if(leap_time >= 0){
all_day = 366;
}
}
if ((endYear % 4 == 0 && endYear % 100 != 0) || (endYear % 100 == 0 && endYear % 400 == 0)) {
flag = 2;
//var date = ;
leap_year = new Date(endYear + "/02/29");
leap_time = leap_year.getTime()-end.getTime();
if(leap_time<=0){
all_day = 366;
}
}
var year_time = all_day*24*60*60*1000;
if(time>year_time){
return false;
}else{
return true;
}
}
获取某一天的下一天
function getNextDay(d) {
d = common.parseDate(d).getTime();
d = +d + 1000 * 60 * 60 * 24;
d = new Date(d);
//return d;
//格式化
return d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate() + ' ' + '00:00:00';
}
获取某一天的下一年
common.getNextYear = function(date) {
var datastr;
var d = common.parseDate(date);
var strYear = d.getFullYear() + 1;
var strHour = d.getHours();
if (strHour == 0) {
d.setDate(d.getDate() - 1);
var strDay = d.getDate();
} else {
d.setHours(d.getHours() - 1);
var strDay = d.getDate();
var strHour = d.getHours();
}
var strMonth = d.getMonth() + 1;
if (strMonth < 10) {
strMonth = "0" + strMonth;
}
if (strDay < 10) {
strDay = "0" + strDay;
}
if (strHour < 10) {
strHour = "0" + strHour;
}
if (strHour == 0) {
datastr = strYear + "-" + strMonth + "-" + strDay + ' 23:59:59';
} else {
datastr = strYear + "-" + strMonth + "-" + strDay + ' ' + strHour + ':59:59';
}
return datastr;
}