为什么输入:421123198802316413,提示日期和校验位错误了,还会执行onclick???? 代码如下:<head runat="server">
<title>身份证信息查询</title>
<script language="javascript" type="text/javascript">
function chaeck()
{
var cid=document.getElementById("TextBox1").value;
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(cid)))
{
alert("输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X");
}
else
{
if(cid.length==18)
{
var address = cid.substring(0,6);
//alert(address);
var year=cid.substring(6,10);
var month=cid.substring(10,12);
var day=cid.substring(12,14);
var birthday=year+"-"+month+"-"+day;
//alert(birthday);
var reg=/^([0-9]{4}\-(0?4|0?6|0?9|11)\-([0-2]?[0-9]|30)|[0-9]{4}\-(0?1|0?3|0?5|0?7|0?8|10|12)\-([0-2]?[0-9]|3[0-1])|(?:[0-9]{2}([02468][048]|[13579][26]))\-0?2\-[0-2]?[0-9]|(?![0-9]{2}([02468][048]|[13579][26]))[0-9]{4}\-0?2\-([01]?[0-9]|2[0-8]))$/;
if(birthday.match(reg)==null)
{
alert("你输入的身份证号中日期错误(第7-14位)");
}
else{
var Wi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
for(i = 0; i < 17; i ++)
{
nTemp += cid.substr(i, 1) * Wi[i];
}
valnum = arrCh[nTemp % 11]; //验证 检验码
if (valnum != cid.substr(17, 1))
{
alert('第18位身份证的校验码不正确!');
}
}
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<table style="width:500px;" align="center">
<tr><td style="background-color:#336689; text-align:center"><span style="font-size:x-large; color:White; font-family:华文行楷">身份证信息查询</span></td></tr>
<tr><td >请输入身份证号:<asp:TextBox ID="TextBox1" runat="server" MaxLength="18"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="查看" onclientclick="return chaeck();" onclick="Button1_Click" />
</td></tr>
<tr><td>
<asp:Label ID="Label1" runat="server" Text=""></asp:Label></td></tr>
</table> protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = "";
if(!IsPostBack)
{
list2.Clear();
list2.Add("湖北省-黄冈市-黄州区", "421102");
list2.Add("湖北省-黄冈市-团风县", "421121");
list2.Add("湖北省-黄冈市-红安县", "421122");
list2.Add("湖北省-黄冈市-罗田县", "421123");
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string cid = TextBox1.Text.ToString(); long address1 = Convert.ToInt64(cid.Substring(0, 6));
string address = "";
string year = ""; string month = ""; string day = ""; string sex = "";
short sex1; bool kk=false;
foreach (string str in list2.Values)
{
if (str == cid.Substring(0, 6))
{
kk = true;
}
} if (kk)
{
for (int i = 0; i < list2.Count; i++)
{
string str = list2.GetByIndex(i).ToString();
if (str == cid.Substring(0, 6))
{
address = list2.GetKey(i).ToString();
year = cid.Substring(6, 4);
month = cid.Substring(10, 2);
day = cid.Substring(12, 2); short k = 2;
sex1 = Convert.ToInt16(Convert.ToInt16(cid.Substring(14, 3)) % k); if (sex1 == 0)
{ sex = "女"; }
else sex = "男";
break;
}
}
}
else
{
Response.Write("<script>alert('你输入的身份证号的地址码错误!');</script>");
}
Label1.Text = "查询结果:<br>地址:" + address + "<br>性别:" + sex + "<br>生日:" + year + "-" + month + "-" + day;
}
<title>身份证信息查询</title>
<script language="javascript" type="text/javascript">
function chaeck()
{
var cid=document.getElementById("TextBox1").value;
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(cid)))
{
alert("输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X");
}
else
{
if(cid.length==18)
{
var address = cid.substring(0,6);
//alert(address);
var year=cid.substring(6,10);
var month=cid.substring(10,12);
var day=cid.substring(12,14);
var birthday=year+"-"+month+"-"+day;
//alert(birthday);
var reg=/^([0-9]{4}\-(0?4|0?6|0?9|11)\-([0-2]?[0-9]|30)|[0-9]{4}\-(0?1|0?3|0?5|0?7|0?8|10|12)\-([0-2]?[0-9]|3[0-1])|(?:[0-9]{2}([02468][048]|[13579][26]))\-0?2\-[0-2]?[0-9]|(?![0-9]{2}([02468][048]|[13579][26]))[0-9]{4}\-0?2\-([01]?[0-9]|2[0-8]))$/;
if(birthday.match(reg)==null)
{
alert("你输入的身份证号中日期错误(第7-14位)");
}
else{
var Wi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
for(i = 0; i < 17; i ++)
{
nTemp += cid.substr(i, 1) * Wi[i];
}
valnum = arrCh[nTemp % 11]; //验证 检验码
if (valnum != cid.substr(17, 1))
{
alert('第18位身份证的校验码不正确!');
}
}
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<table style="width:500px;" align="center">
<tr><td style="background-color:#336689; text-align:center"><span style="font-size:x-large; color:White; font-family:华文行楷">身份证信息查询</span></td></tr>
<tr><td >请输入身份证号:<asp:TextBox ID="TextBox1" runat="server" MaxLength="18"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="查看" onclientclick="return chaeck();" onclick="Button1_Click" />
</td></tr>
<tr><td>
<asp:Label ID="Label1" runat="server" Text=""></asp:Label></td></tr>
</table> protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = "";
if(!IsPostBack)
{
list2.Clear();
list2.Add("湖北省-黄冈市-黄州区", "421102");
list2.Add("湖北省-黄冈市-团风县", "421121");
list2.Add("湖北省-黄冈市-红安县", "421122");
list2.Add("湖北省-黄冈市-罗田县", "421123");
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string cid = TextBox1.Text.ToString(); long address1 = Convert.ToInt64(cid.Substring(0, 6));
string address = "";
string year = ""; string month = ""; string day = ""; string sex = "";
short sex1; bool kk=false;
foreach (string str in list2.Values)
{
if (str == cid.Substring(0, 6))
{
kk = true;
}
} if (kk)
{
for (int i = 0; i < list2.Count; i++)
{
string str = list2.GetByIndex(i).ToString();
if (str == cid.Substring(0, 6))
{
address = list2.GetKey(i).ToString();
year = cid.Substring(6, 4);
month = cid.Substring(10, 2);
day = cid.Substring(12, 2); short k = 2;
sex1 = Convert.ToInt16(Convert.ToInt16(cid.Substring(14, 3)) % k); if (sex1 == 0)
{ sex = "女"; }
else sex = "男";
break;
}
}
}
else
{
Response.Write("<script>alert('你输入的身份证号的地址码错误!');</script>");
}
Label1.Text = "查询结果:<br>地址:" + address + "<br>性别:" + sex + "<br>生日:" + year + "-" + month + "-" + day;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货