HTML:
身份证号:<input type="text" name="tidentity_border" id="tidentity_border" onChange="GetBir_and_Sex(this.id,'born_border','age_boorder','gender_border')" /><br> 性别:<select name="gender_border" id="gender_border"> <option value="">=选择性别=</option> <option value="男">男</option> <option value="女">女</option> </select><br> 出生年月<input type="text" name="born_border" id="born_border" /><br> 年龄:<input type="text" name="age_boorder" id="age_boorder" />
JS:
<script> // 根据身份证号获取 生日、 年龄、 性别 //生日 function GetBir_and_Sex(IDNu, born_border, 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 born_border = document.getElementById(born_border); try { if (typeof(eval(born_border)) == "undefined") { //alert('参数born_border为空'); } else { born_border.value = str.substring(6, 10) + "-" + str.substring(10, 12) + "-" + str.substring(12, 14); } } catch (e) { //alert('参数born_border错误'); } //年龄 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('参数born_border为空'); } else { if (str.substring(10, 12) < month || str.substring(10, 12) == month && str.substring(12, 14) <= day) { age++; } ages.value = age; } } catch (e) { //alert('参数born_border错误'); } //性别 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; } }
当我们输入身份证号时,可以通过身份证号的前6位数字来获取到出生年月信息,通过身份证号的第15位数字来获取性别信息。年龄可以通过当前时间减去出生年月来计算得出。具体实现过程可以通过解析身份证号来实现,比如使用正则表达式来获取身份证号的各个部分信息。