所有说明都注释zai在了代码里,这里就不做说明了。
原生js,为了方便调用,没有使用jquery。
之前发的有些问题,这次修正了一下。
JS分:
<script>
////根据身份证号获取 生日、年龄、性别
//生日
function GetBir_and_Sex(IDNu,Birth,ages,sex){
var IDNu=document.getElementById(IDNu);
var re = /^\d{6}(((19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}([0-9]|x|X))|(\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}))$/;
if(!re.test(IDNu.value)){
alert("身份证号码有误,请重新填写!");
IDNu.focus();
//location.replace("");
return false;
}
var str=IDNu.value;
var Birth=document.getElementById(Birth);
try {
if (typeof(eval(Birth)) == "undefined") {
//alert('参数Birth为空');
}else{
Birth.value=str.substring(6, 10) + "-" + str.substring(10, 12) + "-" + str.substring(12, 14);
}
}
catch(e){
//alert('参数Birth错误');
}
//年龄
var ages=document.getElementById(ages);
var myDate = new Date();
var month = myDate.getMonth() + 1;
var day = myDate.getDate();
var age = myDate.getFullYear() - str.substring(6, 10) - 1;
try {
if (typeof(eval(ages)) == "undefined") {
//alert('参数Birth为空');
}
else{
if (str.substring(10, 12) < month || str.substring(10, 12) == month && str.substring(12, 14) <= day) {
age++;
}
ages.value=age;
}
}
catch(e){
//alert('参数Birth错误');
}
//性别
var sec=str.substring(16,17);
var sex=document.getElementById(sex);
if(sec%2==0){
var sew="女";
}
else{
var sew="男";
}
sex.value=sew;
for(i=0;i<sex.options.length;i++)
if(sex.options[i].value==sew){
sex.options[i].selected=true;
}
}
</script>
html部分
身份证号:<input type="text" name="Edu" id="Edu" onChange="GetBir_and_Sex(this.id,'Birth','Ysold','Usex')"/><br>
性别:<select name="Usex" id="Usex"><option value="">=选择性别=</option><option value="男">男</option><option value="女">女</option></select><br>
出生年月<input type="text" name="Birth" id="Birth" /><br>
年龄:<input type="text" name="Ysold" id="Ysold" />
说明:onChange="GetBir_and_Sex(this.id,'Birth','Ysold','Usex')" 是身份证号失去焦点后触发,第一个参数是身份证号文本框的ID,Birth是出生日期文本框ID,另外两个参数同理分别是年龄和性别文本框的ID。
onChange="GetBir_and_Sex(this.id,'Birth','Ysold','Usex')"
以上内容为贝恩斯网络原创,方便大家借鉴使用。转载qing请注明出处哦