说明:平时项目用到的一些常见过滤方法,有些是vue过滤器,稍微修改下吧,我就不改了。
js四舍五入不准确的解决(重写方法):
Number.prototype.toFixed = function(length)
{
var carry = 0; //存放进位标志
var num,multiple; //num为原浮点数放大multiple倍后的数,multiple为10的length次方
var str = this + ''; //将调用该方法的数字转为字符串
var dot = str.indexOf("."); //找到小数点的位置
if(str.substr(dot+length+1,1)>=5) carry=1; //找到要进行舍入的数的位置,手动判断是否大于等于5,满足条件进位标志置为1
multiple = Math.pow(10,length); //设置浮点数要扩大的倍数
num = Math.floor(this * multiple) + carry; //去掉舍入位后的所有数,然后加上我们的手动进位数
var result = num/multiple + ''; //将进位后的整数再缩小为原浮点数
/*
* 处理进位后无小数
*/
dot = result.indexOf(".");
if(dot < 0){
result += '.';
dot = result.indexOf(".");
}
/*
* 处理多次进位
*/
var len = result.length - (dot+1);
if(len < length){
for(var i = 0; i < length - len; i++){
result += 0;
}
}
return result;
};
获取链接参数:
//获取链接参数 传参示例 productDetail.html?loanId=17&baseUrl=http://192.168.1.147:8080
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var reg_rewrite = new RegExp("(^|/)" + name + "/([^/]*)(/|$)", "i");
var r = window.location.search.substr(1).match(reg);
var q = window.location.pathname.substr(1).match(reg_rewrite);
if (r != null) {
return unescape(r[2]);
} else if (q != null) {
return unescape(q[2]);
} else {
return null;
}
}
获取url参数,返回对象
// 提取URL中的各个GET参数,返回json对象
function parseQueryString(url){
var str=url.split("?")[1];
if(str){
var iterms = JSON.stringify(str).split("&");
var arr,Json={};
for(var i=0;i<iterms.length;i++){
arr=iterms[i].split("=");
Json[arr[0]]=arr[1];
}
return Json;
}
};
手机号显示前三后二,其他用星号
formatterPhone: function (val) { //手机号 显示前三后二
var strLength = val.length;
var star = '';
var strRel = '';
//星号部分
var hideSec = val.substring(3, val.length - 2);
for (var i = 0; i < hideSec.length; i++) {
star += "*";
};
strRel = val.substring(0, 3) + star + val.substr(val.length - 2);
return strRel;
},
姓名显示第一个字:
formatterName: function (val) { //姓名 显示第一个字
var strLength = val.length;
var star = '';
var strRel = '';
//星号部分
var hideSec = val.substring(1, val.length);
for (var i = 0; i < hideSec.length; i++) {
star += "*";
};
strRel = val.substring(0, 1) + star;
return strRel;
},
过滤金额,没三位用逗号隔开
formatMoneyNumber(n){ //过滤金额,每三位用逗号隔开
var b=parseInt(n).toString();
var len=b.length;
if(len<=3){return b;}
var r=len%3;
return r>0?b.slice(0,r)+","+b.slice(r,len).match(/\d{3}/g).join(","):b.slice(r,len).match(/\d{3}/g).join(",");
}
保留两位小数:
formatterNumPoint2: function (val) { //保留两位小数 如果是空,则返回0.00
if (!val) {
return '0.00';
} else {
var res = parseFloat(val).toFixed(2);
return res;
}
}
获取当前时间:
// 获取当前时间
function getNowTime() {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
var HH = date.getHours();
var mm = date.getMinutes(); //获取当前分钟数(0-59)
var ss = date.getSeconds(); //获取当前秒数(0-59)
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = year + "-" + month + "-" + strDate + " " + HH + ":" + mm + ":" + ss;
return currentdate;
}
复制到剪切板(放到ajax内部无效,需要单独触发):
// 拷贝内容
function copyToClipboard(txt) {
var oInput = document.createElement('input');
oInput.value = txt;
document.body.appendChild(oInput);
oInput.select(); // 选择对象
document.execCommand("Copy"); // 执行浏览器复制命令
oInput.className = 'oInput';
oInput.style.display = 'none';
return true;
}
正则验证:
var validatePhone = function (rule, value, callback) { //验证手机号 11位数字
var reg = /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/;
if (!reg.test(value)) {
callback(new Error('请输入正确的手机号码'))
} else {
callback();
}
};