当前位置: 代码迷 >> Java Web开发 >> 可能很简单,但小弟我不会,请帮忙修改-
  详细解决方案

可能很简单,但小弟我不会,请帮忙修改-

热度:4630   发布时间:2013-02-25 21:14:07.0
可能很简单,但我不会,请帮忙修改----------------
以下是身份证验证代码,想实现验证通过后:点击文本框出生日期、性别,可以自动显示出来,先谢谢了

身份证号码:<input type="text" size="20" id="asidinput" onkeyup="this.value=ignoreSpaces(this.value)" value="" 

onblur="alert(cidInfo(asidinput.value))" />出生日期:<input type="text" maxlength="10" name="sBirthday" style="width: 

91px"/>性别:<input type="text" maxlength="4" name="ssex" style="width: 41px"/>
  <script type="text/javascript" language="javascript">
  var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江

苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重

庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳

门",91:"国外"} 
  function cidInfo(sId){
  var iSum=0
  var info=""
  if(!/^\d{17}(\d|x)$/i.test(sId))return "Error:校验失败!";
  sId=sId.replace(/x$/i,"a");
  if(aCity[parseInt(sId.substr(0,2))]==null)return "Error:非法地区!";
  sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
  var d=new Date(sBirthday.replace(/-/g,"/"))
  if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "Error:非法生日!";
  for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)
  if(iSum%11!=1)return "Error:非法身份证号!";
  return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")
  }
function ignoreSpaces(string) {
  var temp = "";
  string = '' + string;
  splitstring = string.split(" ");
  for(i = 0; i < splitstring.length; i++)
  temp += splitstring[i];
  return temp;
  }
  </script>

------解决方案--------------------------------------------------------
验证通过后,截取身份证的第7位到第14位,为生日。身份证号的倒数第二位为性别,偶数为女性,奇数为男性。
------解决方案--------------------------------------------------------
探讨
以下是身份证验证代码,想实现验证通过后:点击文本框出生日期、性别,可以自动显示出来,先谢谢了

身份证号码:<input type="text" size="20" id="asidinput" onkeyup="this.value=ignoreSpaces(this.value)" value=""

onblur="alert(cidInfo(asidinput.value))" ……

------解决方案--------------------------------------------------------

改了两个地方 红字地方 效果实现

HTML code
身份证号码:<input type="text" size="20" id="asidinput" onkeyup="this.value=ignoreSpaces(this.value)" value="" onblur="alert(cidInfo(asidinput.value))" />出生日期:<input[color=#FF0000] id="sBirthday"[/color] type="text" maxlength="10" name="sBirthday" style="width: 91px"/>性别:<input id="ssex" type="text" maxlength="4" name="ssex" style="width: 41px"/>  <script type="text/javascript" language="javascript">  var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}   function cidInfo(sId){  var iSum=0  var info=""  if(!/^\d{17}(\d|x)$/i.test(sId))return "Error:校验失败!";  sId=sId.replace(/x$/i,"a");  if(aCity[parseInt(sId.substr(0,2))]==null)return "Error:非法地区!";  sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));  var d=new Date(sBirthday.replace(/-/g,"/"))  if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "Error:非法生日!";  for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)  if(iSum%11!=1)return "Error:非法身份证号!";              [color=#FF0000]document.getElementById("sBirthday").value=sBirthday;       document.getElementById("ssex").value=(sId.substr(16,1)%2?"男":"女");[/color]  return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")  }function ignoreSpaces(string) {  var temp = "";  string = '' + string;  splitstring = string.split(" ");  for(i = 0; i < splitstring.length; i++)  temp += splitstring[i];  return temp;  }  </script>
  相关解决方案