怎样用javascript做个身份证号码验证?? 15

界面如下:<formaction="reg2.asp"onsubmit="returnVerifyInput();"method="post"name="myform"i... 界面如下:<form action="reg2.asp" onsubmit="return VerifyInput();" method="post" name="myform" id="myform">

<table width="300" height="150" border="1" align="center" bordercolor="#000000">
<tr>
<td>用户名:</td>
<td><label>
<input name="name" type="text" id="name" />
</label></td>
</tr>
<tr>
<td>身份证:</td>
<td><label>
<input name="shenfeng" type="text" id="shenfeng" />
</label></td>
</tr>
<tr>
<td>重复身份证:</td>
<td><label>
<input name="shenfeng2" type="text" id="shenfeng2" />
</label></td>
</tr>
<tr>
<td colspan="2" align="center"><label>
<input type="submit" name="Submit" value="提交" /><input name="" type="reset" value="重置" />
</label></td>
</tr>
</table>
</form>

请高手帮忙编一下,本人对javascript不是很熟!
请不要乱回答
展开
 我来答
suevon
2009-03-16 · TA获得超过314个赞
知道答主
回答量:99
采纳率:0%
帮助的人:68.3万
展开全部
function VerifyInput(){

var CardNo=document.myform.shenfeng.value;
var CardNo2=document.myform.shenfeng2.value;
if(CardNo!=CardNo2){
alert("2次输入数据不一致!从新输入!");
return false;
}

if ((CardNo == "")||(!(isNumber(CardNo))&&(CardNo.length == 15))||(!(isNumber(CardNo.substr(0,17)))&&(CardNo.length == 18))||((CardNo.length != 15)&&(CardNo.length != 18)))
{
alert("您的身份证号码输入有误,必需是15数字或18位,请重新检查并输入!");
return false;
}
else if (CardNo.length == 15)
{
if(CardNo.substr(8,2)>12||CardNo.substr(8,2)<1)
{
alert("您身份证的出生“月”输入有误,请重新检查并输入!");
return false;
}
if(CardNo.substr(10,2)>31||CardNo.substr(10,2)<1)
{
alert("您身份证的出生“日”输入有误,请重新检查并输入!");
return false;
}
}
else if (CardNo.length == 18)
{
if(CardNo.substr(6,4)<1900||CardNo.substr(6,4)>2100)
{
alert("您身份证的出生“年”输入有误,请重新检查并输入!");
return false;
}
if(CardNo.substr(10,2)>12||CardNo.substr(10,2)<1)
{
alert("您身份证的出生“月”输入有误,请重新检查并输入!");
return false;
}
if(CardNo.substr(12,2)>31||CardNo.substr(12,2)<1)
{
alert("您身份证的出生“日”输入有误,请重新检查并输入!");
return false;
}
}

var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
var Ai = new Array('1','0','X','9','8','7','6','5','4','3','2');

if (CardNo.charAt(17) == 'x')
{
CardNo = CardNo.replace("x","X");
}

var checkDigit = CardNo.charAt(17);
var cardNoSum = 0;

for (var i=0; i<CardNo.length-1; i++)
{
cardNoSum = cardNoSum + CardNo.charAt(i)*Wi[i];
}

var seq = cardNoSum%11;
var getCheckDigit = Ai[seq];

if (checkDigit != getCheckDigit)
{
alert("您的身份证号码校验失败,请重新检查并输入!");
return false;
}
return true;
}
else
{
return true;
}
}
maofudong
2009-03-15 · TA获得超过118个赞
知道答主
回答量:118
采纳率:0%
帮助的人:60.9万
展开全部
var sf=document.getElmentById("shenfeng");
if(sf.length==15 || sf.length==18){
//是身份证的操作
}

else{
//不是身份证的操作
}

这个是靠长度来判断的.
至于什么省市区的规则我也不明白 - - 没法写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
firefly8212
2009-03-15 · TA获得超过5667个赞
知道小有建树答主
回答量:826
采纳率:0%
帮助的人:330万
展开全部
18位身份证....
XXXXXX-XXXX-XX-XX-XXXX
省市区- 年 -月-日-个人编号

对应对其验证一下就知道是不是身份证了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1065227709
2009-03-15 · TA获得超过312个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:0
展开全部
去找验证身份证的正则表达示!然后用js验证就OK了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
舞阳welsh
2009-03-15 · TA获得超过792个赞
知道小有建树答主
回答量:349
采纳率:0%
帮助的人:301万
展开全部
上面的回答很好啊~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式