• 沙里软件

  • ShaliSoft.com [手机站]   办公桌收纳抽屉
  • 首页
  • 博文
  • 演示
  • 管理
  • JS 银行卡号判断验证

    网络   2017/7/28 8:53:07
    //Description:  银行卡号Luhm校验
    //Luhm校验规则:16位银行卡号(19位通用):
    // 1.将未带校验位的 15(或18)位卡号从右依次编号 1 到 15(18),位于奇数位号上的数字乘以 2。
    // 2.将奇位乘积的个十位全部相加,再加上所有偶数位上的数字。
    // 3.将加法和加上校验位能被 10 整除。
    //方法步骤很清晰,易理解,需要在页面引用Jquery.js   
    
    //bankno为银行卡号 banknoInfo为显示提示信息的DIV或其他控件
    function luhmCheck(bankno) {
        var lastNum = bankno.substr(bankno.length - 1, 1); //取出最后一位(与luhm进行比较)
        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) {
            $("#banknoInfo").html("Luhm验证通过");
            return true;
        } else {
            $("#banknoInfo").html("银行卡号必须符合Luhm校验");
            return false;
        }
    }


    阅读(9109) 分享(0)

    上一篇: 怎么判断银行卡号格式是否正确?
    下一篇: Win7的IIS7中ASP获得的系统日期格式为斜杠和去掉星期的解决办法

  • 精彩推荐

    ◆ MySQL配置优化
    ◆ ASP.NET 导入excel
    ◆ PHP5.4 + IIS + Win7的配置
    ◆ MySQL5.5安装图解教程
    ◆ 使用new Image()打点时的一个注意事项
    ◆ OutputCache各参数的说明
    ◆ asp.net 格式化显示时间为几个月,几天前,几小时前,几分钟前,或几秒前
    ◆ MySQL性能分析及explain的使用
    ◆ 为什么iPhone只允许升级,不允许降级
    ◆ 微软澄清:盗版用户无法免费升级Win 10
  • 用心做事 不能唯利是图

    • 吊儿
    • 用QQ联系我17905772
  • 搜索


  • 最新文章

    • MySQL配置优化
    • EditPlus 添加文件比较工具winmerge
    • 滚动悬浮固定JS特效
    • Windows Server 2003操作系统单网卡搭建VPN服务器
    • 安装完office后 在组件服务里DCOM配置中找不到

  • 热门文章

    • php sso单点登录实现代码
    • 中国菜刀(China chopper) 最新黑客工具
    • redis.conf中文版(基于2.4)
    • 搜索引擎名单大全
    • php图片上传类,支持加水印,生成略缩图

  • 最新图库


  • 最新评论


  • 友情链接

  • 沙里软件

  • 最近访客

    Powered by ShaliSoft.com 豫ICP备13008529号

    免责声明:本站部分内容来源于互联网,转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责,也不构成任何其他建议。如果发现侵犯版权,联系QQ17905772进行删除。