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局域网访问webservice以及其中的一些问题
应老师的要求,要做个安卓app,实现备份app上的数据到服务器上的mongodb上,网上搜了下相关的实现方式.利用webservice技术,具体来说就是客户端直接调用服务器端的接口.之前从来没接触这玩 ...
- list 迭代器随机范围内移动
Increments an iterator by a specified number of positions. template<class InputIterator, class Di ...
- codeforces 739E
官方题解是一个n2logn的dp做法 不过有一个简单易想的费用流做法 对每个小精灵,连边(A,i,1,pi) (B,i,1,ui) (i,t,1,0) (i,t,1,-pi*ui) 最后连边(s,A, ...
- POJ 1163.The Triangle-动态规划
The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 50122 Accepted: 30285 De ...
- 主席树【bzoj3524(p3567)】[POI2014]Couriers
Description 给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0 ...
- 【找规律】URAL - 2065 - Different Sums
就让0出现得尽可能多嘛……大概感受一下就是这样…… 0 0 ... 0 0 0 0 4 -4 3 -3 2 -2 1 -1 #include<cstdio> using namespace ...
- Bean实例化(三种方法)
(一)构造器实例化Bean 1. Bean1.java package com.inspur.ioc; public class Bean1 { } 2.Beans1.xml <?xml ver ...
- nginx+php-fpm 报错Primary script unknown
报错信息(nginx日志): // :: [crit] #: * stat() : Permission denied), client: 172.21.205.25, server: localho ...
- 一道综合练习题实践list及dictionary集合类
定义一个员工的集合,对员工集合内的元素进行查询和删除.实现员工的签到和签退,要求如下: //A:每天只能签到一次 //B:签退前必须已经签到 //C:显示打卡记录 代码如下:员工信息类: using ...
- Swift,循环及判断
1.for循环(执行固定次数的操作) (1)基本数组循环 var a=[1,2,3] for value in a{ print(value) //1 2 3 } (2)自定义循环次数 for i i ...