前端验证银行卡(Luhn校验算法)
2024-08-31 14:32:17
<!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>
最新文章
- How Google TestsSoftware - Part Five
- 歌词文件解析(一):LRC格式文件的解析
- [翻译] Autofac 控制范围和生命周期
- Android清除本地数据缓存代码案例
- SQL中以count及sum为条件的查询
- [改善Java代码]推荐使用枚举定义常量
- vs2015启动iis express失败
- systemd service
- JavaScript学习笔记(9)——JavaScript语法之流程控制
- 使用git微命令深入理解git工作机制
- python 实现文本文件中的数字按序排序(位操作,低内存占用)
- .9-浅析webpack源码之NodeEnvironmentPlugin模块总览
- java代码中init method和destroy method的三种使用方式
- Java创建柱状图及饼状图
- filddler一个抓包修改的工具 貌似很强大2017.12.07
- 【转】大白话讲解Promise(一)
- docker容器日志收集方案(方案N,其他中间件传输方案)
- mysql学习笔记--遇到的坑
- flask based on tornado
- MGF 637: Financial Modeling
热门文章
- 【LDA】动手实现LDA
- Http抓包工具--查尔斯
- Perl怎样过滤html标签
- hpuoj--1287--HH实习(斐波那契数巧用)
- ie浏览器检测不到cookie的问题
- java 后台实现ajax post跨域请求传递json格式数据获取json数据问题
- 解决IE下的li中img多余4px的问题--IE6有的问题
- 1044 - Access denied for user 'root'@'%' to database 'xahy-blog' 解决方案二
- 线段树合并&;&;启发式合并笔记
- [APIO2014]回文串(回文自动机)