| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1148 人关注过本帖
标题:JavaScript的身份证验证,出现错误。
只看楼主 加入收藏
taoxinhui
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2007-8-7
收藏
 问题点数:0 回复次数:1 
JavaScript的身份证验证,出现错误。
代码如下:我一点提交,总是“输入的不是数字”,我填写正确的身份证号码,还是“输入的不是数字”
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档 </title>
<SCRIPT language=JavaScript>
<!--
//--身份证号码验证-支持新的带x身份证
function isIdCardNo(num)
      {
  if (isNaN(num)) {alert("输入的不是数字!"); return false;}
  var len = num.length, re;
  if (len == 15)
    re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
  else if (len == 18)
    re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
  else {alert("输入的数字位数不对!"); return false;}
  var a = num.match(re);
  if (a != null)
  {
    if (len==15)
    {
      var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
      var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
    }
    else
    {
      var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
      var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
    }
    if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对!"); return false;}
  }
  return true;
      }

//-->
</SCRIPT>
</head>

<body>
<form id="form1" name="form1" method="post" action="shenfengzheng.asp" onSubmit="return isIdCardNo(this)">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td> <label>
  <input NAME="num" class="input_button" value="">
      <input type="submit" name="Submit" value="提交" />
      </label> </td>
    </tr>
  </table>
</form>
</body>
</html>
请详细点,麻烦各位了,先谢谢,有分我一定给,我新手,没有分。
搜索更多相关主题的帖子: 身份证 JavaScript 验证 
2008-10-01 09:12
frankqnj
Rank: 4
等 级:贵宾
威 望:12
帖 子:320
专家分:278
注 册:2008-4-6
收藏
得分:0 
if (isNaN(num)) {alert("输入的不是数字!"); return false;}

不要用这种方法 判断  你其实 需要的是  一个正整数  而不是 数字  不然  你输入 123.234 也是数字 问题是 身份证有 带小数点的么?  -123也是数字 ..

---------------------------------------------------------------------------------------------------------------------------------------------

汗啊!! 仔细看了下 .  你有用正则表达式... 

你是用逐步判断  这也算不上错吧...  所以我收回 横线上面的话...

那么我想  你可能是给 函数传值 的时候出的错  虽然看起来  你传进去的是个数字 比如 123   但是  它其实是'123' 是个string 所以 你应该先 parseInt  一下... 甚至 可以 先一部判断  如果parseInt 后长度 发生改变 则 一定不是数字..  然后再用isNaN  最后再匹配正则

不过还是觉得 直接用正则算了. 虽然你这样做 也许可以在 不是数字的时候 节省 程序运行时间 .但是 如果它是个数字的话 反而 多做了 几次校验....

[[it] 本帖最后由 frankqnj 于 2008-10-1 23:11 编辑 [/it]]
2008-10-01 13:48
快速回复:JavaScript的身份证验证,出现错误。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018881 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved