js 根据身份证获取出生日期及性别
js根据身份证获取出生日期及性别
CreateTime--2017年6月2日11:45:16
Author:Marydon
第一步:身份证号格式校验
/**
* 身份证号格式校验
*/
function idValidator(obj) {
var provinces={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:"国外"
};
var expression=/(^\d{15}$)|(^\d{17}(\d|X)$)/;
var isViald=expression.test(obj.value);
if (isViald)
{
isViald=provinces[obj.value.substr(0,2)]?true:false;
}
return isViald;
}
第二步:通过身份证获取出生日期及性别
/**
* 通过身份证获取出生日期及性别
* @param idCard 15/18位身份证号码
* @return JSON对象
* sex:0-女、1-男;
* birthDay:yyyy-MM-dd
*/
function getBirthdayAndSex(idCard) {
var info = {};
var birth = (idCard.length === 18) ? idCard.slice(6, 14) : idCard.slice(6, 12);
// 18位:提取第17位数字;15位:提取最后一位数字
var order = (idCard.length == 18) ? idCard.slice(-2,-1):idCard.slice(-1);
info.birthDay = (idCard.length === 18) ? ([birth.slice(0, 4),
birth.slice(4, 6), birth.slice(-2)
]).join('-') : ([
'19' + birth.slice(0, 2), birth.slice(2, 4),
birth.slice(-2)
]).join('-');
// 余数为0代表女性,不为0代表男性
info.sex = (order % 2 === 0 ? 0 : 1);
return info;
}
第三步:改变出生日期及性别的值及只读状态
/**
* 改变出生日期及性别的值及只读状态
*/
function changeCardInfo(obj) { if ("" == obj.value && !document.getElementById('BIRTH_DAY2').disabled)
return; // 格式校验结果
var result = idValidator(obj);
if (result) {
// 获取出生日期及性别
var cardInfo = getBirthdayAndSex(obj.value);
var birthDay = cardInfo.birthDay;
var sex = cardInfo.sex; document.getElementById('BIRTH_DAY2').disabled = true;
document.getElementById('BIRTH_DAY2').value = birthDay;
document.getElementById('BIRTH_DAY').value = birthDay; document.getElementById('male').disabled = true;
document.getElementById('female').disabled = true; if (1 == sex) {
document.getElementById('male').checked = true;
document.getElementById('SEX').value = '男';
} else {
document.getElementById('female').checked = true;
document.getElementById('SEX').value = '女';
}
} else {//重置
document.getElementById('BIRTH_DAY').value = "";
document.getElementById('BIRTH_DAY2').value = "";
document.getElementById('BIRTH_DAY2').disabled = false;
document.getElementById('male').disabled = false;
document.getElementById('female').disabled = false;
document.getElementById('male').checked = true;
document.getElementById('SEX').value = '男';
} }
HTML
<table border="0" cellpadding="1" cellspacing="0" align="center">
<tbody>
<tr>
<td>身份证号</td>
<td>
<input name="CARD_ID" class="TextBox" type="text" dataType="idcard" id="CARD_ID" errMessage="请输入正确的身份证号!"
onblur="changeCardInfo(this);" />
</td>
<td>性别</td>
<td>
<label>
<input name="SEX1" type="radio" checked id="male" onchange="$('#SEX').val('男');" />
男
</label>
<label>
<input name="SEX1" type="radio" id="female" onchange="$('#SEX').val('女');" />
女
</label>
<input name="SEX" type="hidden" id="SEX" value="男" />
</td>
<td>出生日期</td>
<td>
<input class="TextBox" readonly id="BIRTH_DAY2" type="text" onclick="WdatePicker({maxDate:'%y-%M-%d'});"
onblur="$('#BIRTH_DAY').val(this.value)" />
<input name="BIRTH_DAY" id="BIRTH_DAY" type="hidden" />
</td>
</tr>
</tbody>
</table>
相关推荐:
js 根据身份证获取出生日期及性别的更多相关文章
- JS-根据身份证获取 出生日期和性别
一.根据身份证获取出生日期和性别/** * 根据身份证获取出生日期(yyyy-MM-dd) * @param psidno * @returns {birthday:yyyy-MM-dd} * @co ...
- js从身份证号中获取出生日期和性别
今天,在做移动端的项目中,按照设计稿的要求,是可以让用户自己输入出生日期的,我还很认真的用了刚刚知道的html5表单的日期类型,本想着终于不用日期插件就可以实现用户选择自己的出生日期了,可结果老大说, ...
- java 根据身份证号码获取出生日期、性别、年龄
1.情景展示 如何根据身份证号,计算出出生日期.性别.年龄? 2.解决方案 从网上找的别人的,因为并没有实际用到,所以并未对其优化! /** * 通过身份证号码获取出生日期.性别.年龄 * @pa ...
- Excel通过身份证获取出生年月,性别,年龄,生肖,星座,省份等信息总结归纳
Excel通过身份证获取出生年月,性别,年龄,生肖,星座,省份等信息总结归纳 早期的身份证号码为15位数字,现在使用的身份证号码为18位数字,它们的含义如下:(1)15位:1-6位为地区代码,7-8位 ...
- JS-身份证号获取出生日期、性别、年龄
var cardId=$("#cardId").val();//先获取身份证号(据自己实际写法获取) 1.获取出生日期: function getBirth(cardId){ va ...
- Java 通过身份证获取生日和性别
/** * 通过身份证号获取生日和性别 * @param identifyNumber * @return */ private String[] getBirthAndSexByIdNo(Strin ...
- Java中校验身份证号合法性(真伪),获取出生日期、年龄、性别、籍贯
开发过程中有用的身份证号的业务场景,那么校验身份证的合法性就很重要了,另外还有通过身份证获取出生日期.年龄.性别.籍贯等信息, 下面是本人在开发中用到的关于校验身份证真伪的工具类,可以直接拿来使用,非 ...
- JavaScript 通过身份证号获取出生日期、年龄、性别 、籍贯
JavaScript 通过身份证号获取出生日期.年龄.性别 .籍贯(很全) 效果图: 示例代码: //由于没有写外部JS,所以代码比较长!!! <!DOCTYPE html PUBLIC &qu ...
- js 根据身份证号获取性别,年龄,等
$(function(){ $("#corpOwnerIdno").blur(function(){ //获取输入身份证号码 ...
随机推荐
- Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件
Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件 在开发中,我们常常用打印log的方式来调试我们的应用.在Java中我们常常使用方法System.out ...
- Node-sqlite3多字段插入数据问题
Node-sqlite3多字段插入数据问题 在npm官网上看到sqlite3的使用方法,就去尝试了一下,奈何关于多字段插入的API简介很少,直接上代码: 官网的示例如下: var sqlite3 = ...
- phython正则表达式 Python Re模块
反斜杠问题 与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰.假如你需要匹配文本中的字符”\”, Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式 ...
- android studio中timber的配置
在你项目的module级别的build.gradle中加入 compile 'com.jakewharton.timber:timber:3.1.0' 然后Timber的依赖就添加进来了.
- 洛谷 P1093 奖学金【三级结构体排序】
题目描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高 ...
- 【Ajax】PHP中ajax的基本知识点
Ajax常用属性和方法: 属性: readyState: 0(开始创建ajax对象)1(调用open方法)2(调用send方法)3(正在返回数据)4(返回数据结束) responseText/resp ...
- Codeforces 788C The Great Mixing(背包问题建模+bitset优化或BFS)
[题目链接] http://codeforces.com/problemset/problem/788/C [题目大意] 给出一些浓度的饮料,要求调出n/1000浓度的饮料,问最少需要多少升饮料 [题 ...
- Eclipse编辑jsp卡死解决方案
使用Eclipse编辑jsp.js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲.将所有用过的方法罗列如下: 1.取消验证 windo ...
- 焦点改变事件OnFocusChangeListener
效果图 1.MainActivity.java package com.example.app2; import android.support.v7.app.AppCompatActivity; i ...
- Mac SublimeREPL 插件安装使用及解决各种坑
虽然网上教程一大堆,然而都不全面,遇到的各种坑的情况都没写. 一.安装 前提是你安装了Package Control,见Mac Sublime Text 3 配置Python环境及安装插件 Prefe ...