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>
    

      

  • 相关阅读:
    对象池使用时要注意几点
    Flash3D学习计划(一)——3D渲染的一般管线流程
    714. Best Time to Buy and Sell Stock with Transaction Fee
    712. Minimum ASCII Delete Sum for Two Strings
    647. Palindromic Substrings(马拉车算法)
    413. Arithmetic Slices
    877. Stone Game
    338. Counting Bits
    303. Range Sum Query
    198. House Robber
  • 原文地址:https://www.cnblogs.com/htzan/p/6869154.html
Copyright © 2011-2022 走看看