[英]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.