说明:平时项目用到的一些常见过滤方法,有些是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(); } };