繁体   English   中英

JavaScript中的信用卡验证

[英]Credit card validation in javascript

我编写此代码来验证信用卡号码,并将其保存为html文件。 虽然没有用。

<html>
    <head>
        <script>
    function mod10_check(val){
        var nondigits = new RegExp(/[^0-9]+/g);
        var number = val.replace(nondigits,'');
        var pos, digit, i, sub_total, sum = 0;
        var strlen = number.length;
        if(strlen < 13){ return false; }
        for(i=0;i
            <strlen;i++){
            pos = strlen - i;
            digit = parseInt(number.substring(pos - 1, pos));
            if(i % 2 == 1){
                sub_total = digit * 2;
                if(sub_total > 9){
                    sub_total = 1 + (sub_total - 10);
                }
            } else {
                sub_total = digit;
            }
            sum += sub_total;
        }
        if(sum > 0 && sum % 10 == 0){
            return true;
        }
        return false;
    }

            </script>
        </head>
        <body>
            <form>
                <input type="text" 
        name="cc_number" 
        onblur="if(mod10_check(this.value)){$('#cc_error').hide(); }     else     {       $('#cc_error').show(); }" 
        value="" />
                <span id="cc_er`enter code here`ror" style="display:none;">The card   number     is invalid.</span>
            </form>
        </body>
    </html>

不验证在文本框中输入的值。 当文本框失去焦点时不会显示消息。不愿意使用任何第三方插件。此代码有什么问题?

尝试将内联代码重新编写为事件处理程序。

 var ccInp = document.getElementById('cc_no'); ccInp.addEventListener('blur', function() { if(!mod10_check(ccInp.value)) { document.getElementById('cc_error').style.display = ''; } }); function mod10_check(val){ var nondigits = new RegExp(/[^0-9]+/g); var number = val.replace(nondigits,''); var pos, digit, i, sub_total, sum = 0; var strlen = number.length; if(strlen < 13){ return false; } for(i=0;i <strlen;i++){ pos = strlen - i; digit = parseInt(number.substring(pos - 1, pos)); if(i % 2 == 1){ sub_total = digit * 2; if(sub_total > 9){ sub_total = 1 + (sub_total - 10); } } else { sub_total = digit; } sum += sub_total; } if(sum > 0 && sum % 10 == 0){ return true; } return false; } 
 <form> <input type="text" name="cc_number" value="" id="cc_no"/> <span id="cc_error" style="display:none;">The card number is invalid.</span> </form> 

jsFiddle: http : //jsfiddle.net/8kyhtny2/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM