JS方法大小结
JS方法大总结
1、js验证身份证信息是否合法
//js验证身份证信息是否合法 function validateCard(pId, field){ var arrVerifyCode = [1,0,"x",9,8,7,6,5,4,3,2]; var Wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; var Checker = [1,9,8,7,6,5,4,3,2,1,1]; if(pId.length != 15 && pId.length != 18){ return false; } var Ai=pId.length==18 ? pId.substring(0,17) : pId.slice(0,6)+"19"+pId.slice(6,16); if (!/^\d+$/.test(Ai)){ return false; } var yyyy=Ai.slice(6,10) , mm=Ai.slice(10,12)-1 , dd=Ai.slice(12,14); var d=new Date(yyyy,mm,dd) , now=new Date(); var year=d.getFullYear() , mon=d.getMonth() , day=d.getDate(); if (year!=yyyy || mon!=mm || day!=dd || d>now || year<1900){ return false; } for(var i=0,ret=0;i<17;i++) ret+=Ai.charAt(i)*Wi[i]; Ai+=arrVerifyCode[ret %=11]; return pId.length ==18 && pId != Ai?false:true;
2、判断浏览器类型及版本
//判断浏览器类型及版本 function CheckBrowser() { ua = navigator.userAgent; ua = ua.toLocaleLowerCase(); var browserVersion; if (ua.match(/msie/) != null || ua.match(/trident/) != null) { browserType = "IE"; //哈哈,现在可以检测ie11.0了! browserVersion = ua.match(/msie ([\d.]+)/) != null ? ua.match(/msie ([\d.]+)/)[1] : ua.match(/rv:([\d.]+)/)[1]; } else if (ua.match(/firefox/) != null) { browserType = "火狐"; } else if (ua.match(/opera/) != null) { browserType = "欧朋"; } else if (ua.match(/chrome/) != null) { browserType = "谷歌"; } else if (ua.match(/safari/) != null) { browserType = "Safari"; } var arr = new Array(browserType, browserVersion); return arr; }
3、数定转化为大写形式
//转换为大写 function numberToCN(numberValue){ var numberValue=new String(Math.round(numberValue*100)); // 数字金额 var chineseValue=""; // 转换后的汉字金额 var String1 = "零壹贰叁肆伍陆柒捌玖"; // 汉字数字 var String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; // 对应单位 var len=numberValue.length; // numberValue 的字符串长度 var Ch1; // 数字的汉语读法 var Ch2; // 数字位的汉字读法 var nZero=0; // 用来计算连续的零值的个数 var String3; // 指定位置的数值 if(len>15){ return "超出计算范围"; } if (numberValue==0){ chineseValue = "零元整"; return chineseValue; } String2 = String2.substr(String2.length-len, len); // 取出对应位数的STRING2的值 for(var i=0; i<len; i++){ String3 = parseInt(numberValue.substr(i, 1),10); // 取出需转换的某一位的值 if ( i != (len - 3) && i != (len - 7) && i != (len - 11) && i !=(len - 15) ){ if ( String3 == 0 ){ Ch1 = ""; Ch2 = ""; nZero = nZero + 1; } else if ( String3 != 0 && nZero != 0 ){ Ch1 = "零" + String1.substr(String3, 1); Ch2 = String2.substr(i, 1); nZero = 0; } else{ Ch1 = String1.substr(String3, 1); Ch2 = String2.substr(i, 1); nZero = 0; } } else{ // 该位是万亿,亿,万,元位等关键位 if( String3 != 0 && nZero != 0 ){ Ch1 = "零" + String1.substr(String3, 1); Ch2 = String2.substr(i, 1); nZero = 0; } else if ( String3 != 0 && nZero == 0 ){ Ch1 = String1.substr(String3, 1); Ch2 = String2.substr(i, 1); nZero = 0; } else if( String3 == 0 && nZero >= 3 ){ Ch1 = ""; Ch2 = ""; nZero = nZero + 1; } else{ Ch1 = ""; Ch2 = String2.substr(i, 1); nZero = nZero + 1; } if( i == (len - 11) || i == (len - 3)){ // 如果该位是亿位或元位,则必须写上 Ch2 = String2.substr(i, 1); } } chineseValue = chineseValue + Ch1 + Ch2; } if ( String3 == 0 ){ // 最后一位(分)为0时,加上“整” chineseValue = chineseValue + "整"; } return chineseValue; }
3、实现千元分隔符
function formatNumber(num){ if(!/^(\+|-)?(\d+)(\.\d+)?$/.test(num)){ return num; } var a = RegExp.$1,b = RegExp.$2,c = RegExp.$3; var re = new RegExp().compile("(\\d)(\\d{3})(,|$)"); while(re.test(b)){ b = b.replace(re,"$1,$2$3"); } return a +""+ b +""+ c; }