demo代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<input type="text" name="idcard" id="idcard">
<span></span>
</body>
</html>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function () {
$("#idcard").on('blur',function () {
var idcard = $(this).val(); // 身份证号字符串
idcardArr = idcard.split(''); // 分割成身份证号数组
var _length = idcardArr.length; // 身份证号长度
var arr = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; // 加权因子(不可变)
var yan = [1,0,'X',9,8,7,6,5,4,3,2]; // 校验码 (不可变)
var str = 0;
for (var i = 0; i < _length-1; i++) {
str = parseInt(str+idcard[i]*arr[i]); // 计算求和
}
var _yu = str % 11; // 取余
var _lastnum = yan[_yu]; // 最后一位数
if (idcardArr[_length-1] == _lastnum) { // 判断是否相同
$(this).next().html('<font color=green>√</font>');
return true;
}else{
$(this).next().html('<font color=red size=2>×</font>');
return false;
}
})
})
</script>
-------------------------------------------------------------------------------------------------
以下为php实现代码:
<?php
$cardid="身份证号";
$len=strlen($cardid);
//加权
$arr=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
$str=0;
for ($i=0; $i <$len-1 ; $i++) {
$substr=substr($cardid,$i,1);
$str=$str+$substr*$arr[$i];
}
$str=$str%11;
$array=array(0=>1,1=>0,2=>"x",3=>9,4=>8,5=>7,6=>6,7=>5,8=>4,9=>3,10=>2);
$yu=$array[$str];
if($yu==substr($cardid,17,18)){
echo "正确";
}else{
echo "失败";
}