zoukankan      html  css  js  c++  java
  • 前端验证银行卡(Luhn校验算法)

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	<input type="" name="" id="Text_BankAccount">
    	<p id="banknoInfo"></p>
    	<button id="btn">测试</button>
    	<script type="text/javascript" src="jquery-1.8.0.min.js"></script>
    	<script type="text/javascript">
    		window.onload = function() {
    			var	btn = $('#btn');
    			btn.on('click', function() {
    				var val = $('#Text_BankAccount').val();
    
    				luhmCheck(val);
    				// console.log(val);
    			})
    			function luhmCheck(bankno){  
    			    var lastNum=bankno.substr(bankno.length-1,1);//取出最后一位(与luhm进行比较)  
    			   	console.log(bankno,lastNum);
    			    var first15Num=bankno.substr(0,bankno.length-1);//前15或18位  
    			    var newArr=new Array();  
    			    for(var i=first15Num.length-1;i>-1;i--){    //前15或18位倒序存进数组  
    			        newArr.push(first15Num.substr(i,1));  
    			    }  
    			    var arrJiShu=new Array();  //奇数位*2的积 <9  
    			    var arrJiShu2=new Array(); //奇数位*2的积 >9  
    			       
    			    var arrOuShu=new Array();  //偶数位数组  
    			    for(var j=0;j<newArr.length;j++){  
    			        if((j+1)%2==1){//奇数位  
    			            if(parseInt(newArr[j])*2<9)  
    			            arrJiShu.push(parseInt(newArr[j])*2);  
    			            else  
    			            arrJiShu2.push(parseInt(newArr[j])*2);  
    			        }  
    			        else //偶数位  
    			        arrOuShu.push(newArr[j]);  
    			    }  
    			       
    			    var jishu_child1=new Array();//奇数位*2 >9 的分割之后的数组个位数  
    			    var jishu_child2=new Array();//奇数位*2 >9 的分割之后的数组十位数  
    			    for(var h=0;h<arrJiShu2.length;h++){  
    			        jishu_child1.push(parseInt(arrJiShu2[h])%10);  
    			        jishu_child2.push(parseInt(arrJiShu2[h])/10);  
    			    }          
    			       
    			    var sumJiShu=0; //奇数位*2 < 9 的数组之和  
    			    var sumOuShu=0; //偶数位数组之和  
    			    var sumJiShuChild1=0; //奇数位*2 >9 的分割之后的数组个位数之和  
    			    var sumJiShuChild2=0; //奇数位*2 >9 的分割之后的数组十位数之和  
    			    var sumTotal=0;  
    			    for(var m=0;m<arrJiShu.length;m++){  
    			        sumJiShu=sumJiShu+parseInt(arrJiShu[m]);  
    			    }  
    			       
    			    for(var n=0;n<arrOuShu.length;n++){  
    			        sumOuShu=sumOuShu+parseInt(arrOuShu[n]);  
    			    }  
    			       
    			    for(var p=0;p<jishu_child1.length;p++){  
    			        sumJiShuChild1=sumJiShuChild1+parseInt(jishu_child1[p]);  
    			        sumJiShuChild2=sumJiShuChild2+parseInt(jishu_child2[p]);  
    			    }        
    			    //计算总和  
    			    sumTotal=parseInt(sumJiShu)+parseInt(sumOuShu)+parseInt(sumJiShuChild1)+parseInt(sumJiShuChild2);  
    			       
    			    //计算Luhm值  
    			    var k= parseInt(sumTotal)%10==0?10:parseInt(sumTotal)%10;          
    			    var luhm= 10-k;  
    			       
    			    if(lastNum==luhm && lastNum.length != 0){  
    			       $("#banknoInfo").html("Luhm验证通过");  
    			       return true;  
    			    }  
    			    else{  
    			       $("#banknoInfo").html("银行卡号必须符合Luhm校验");  
    			       return false;  
    			    }          
    			}  
    		}
    
    	</script>
    </body>
    </html>
    

      

  • 相关阅读:
    被下属骂,记一次矛盾升级——有心无心,蝴蝶效应?
    技术管理进阶——团队合并、解散怎么办?
    “技术转产品”比产品更恶心的几个点
    javaScript系列 [43]TS、Class and ES5
    javaScript系列 [42]node中 require函数的加载过程
    javaScript系列 [52]模板引擎的实现逻辑
    Base64简单介绍
    异或运算(XOR)
    javaScript系列 [51]Rollup 打包器
    javaScript系列 [49] ast && render
  • 原文地址:https://www.cnblogs.com/htzan/p/6869154.html
Copyright © 2011-2022 走看看