• 前端验证银行卡(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>
    

      

  • 相关阅读:
    Python之迭代器,生成器
    Python函数--装饰器进阶
    Python之函数的本质、闭包、装饰器
    Python之函数--命名空间、作用域、global、nonlocal、函数的嵌套和作用域链
    Python函数的定义与调用、返回值、参数
    Python之文件操作
    Python之集合
    基本数据类型补充,深浅copy
    Python基础-元组、列表、字典
    Python常用模块(一)
  • 原文地址:https://www.cnblogs.com/htzan/p/6869154.html
Copyright © 2020-2023  润新知