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(){ //获取输入身份证号码 ...
随机推荐
- times、 time、clock函数说明
sysconf( _SC_CLK_TCK ) 功能 获取系统的 时钟滴答的频率. clock_gettime() clock()返回的是各个线程运行cpu时间的和, 返回值一直都是0. 定义函数: ...
- thinkphp5.0配置nginx重写规则
我的centeros7.3系统,单主机实例: vi /usr/local/nginx/conf/nginx.conf 在如图红框位置加入以下代码(图片是截取的,截取部分上方还有其他的默认配置代码,代码 ...
- centeros7的redis-cli命令不生效解决方法(亲测)
如果你已经安装了redis服务器,并且已经启动,但是redis-cli命令无法生效,分析,命令未加入环境变量.那就给redis命令加入环境变量中: 注意点:redis安装目录会有不同,注意下面的PAT ...
- ubantu对pycharm创建快捷方式
如果你刚开始没有建立快捷方式自己建立一个快捷方式,方法如下 终端输入:sudo gedit /usr/share/applications/Pycharm.desktop粘贴模板: [Desktop ...
- HDU 2551 竹青遍野(循环,水)
/* 他开始在他的院子种竹子,第1个月种1根竹子,第2个月种8根竹子,第3个月种27根竹子 ...第N个月就种(N^3)根竹子.当他种下第X根竹子那一刻,就是他重出江湖之时! 告诉你X的值, 你能算出 ...
- log4j笔记:升级2.X版本的日志滚动问题
因为slf4j依赖的log4j在流量大的时候总遇到多线程引起的死锁问题,升级到log4j2.x版本.原来的log4j.properties配置文件已经不被log4j2支持了,需要改写为log4j2.x ...
- 2014 非常好用的开源 Android 测试工具
http://www.php100.com/html/it/mobile/2014/1015/7495.html 当前有很大的趋势是转向移动应用平台,Android 是最广泛使用的移动操作系统,201 ...
- Java 反射调用的一种优化
写一些Java框架的时候,经常需要通过反射get或者set某个bean的field,比较普通的做法是获取field后调用java.lang.reflect.Field.get(Object),但每次都 ...
- luogu P1095 守望者的逃离
题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会 ...
- [CTSC2017]密钥
传送门:http://uoj.ac/problem/297 “无论哪场比赛,都要相信题目是水的” 这不仅是HNOI2018D2T3的教训,也是这题的教训,思维定势真的很可怕. 普及组水题,真是愧对CT ...