监控页面上身份证填写数值,利用正则限制填写仅为18位的身份证;
简单介绍身份证数字含义:1.前两位数字-省份代码;
2.第3-4位-城市代码;
3.第5-6位-区县代码;
4.第7-14位-出生年月日;
5.第15-17位-同一地址码所标示的区域范围内同年同月同日生人编订的顺序码;
6.第17位-性别-奇数:男性;偶数:女性;
7.最后一位-校验码,可为1-9或X。
this.watch("people_ID",lang.hitch(this,this.AgeSet));
AgeSet: function( elem )
{
//var reg = elem.controlDefinition.attr.validationPattern;
/*如果在控件上已标定可以这么使用,否则直接在code上注明正则*/
var reg = "^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$";
var r = elem.getValue().match(reg);
if ( r !== null)
{
birth = elem.getValue().substring(6,10)+"-"+elem.getValue().substring(10,12)+"-"+elem.getValue().substring(12,14);
gender = parseInt(elem.getValue().substr(16, 1)%2);
if ( gender == 1) //set gender
{
this.byId("selectOne_gender").setValue("男");
}
else
{
this.byId("selectOne_gender").setValue("女");
}
//console.info("gender:",gender)
var today = new Date();
var month = today.getMonth() + 1; //new Date().getMonth是比实际小一个月的
var day = today.getDate();
var age = today.getFullYear() - elem.getValue().substring(6,10) -1;
if ( elem.getValue().substring(10,12) <= month && elem.getValue().substring(12,14)<= day)
{
age++;
this.byId("people_age").setValue(age);
}
else
{
this.byId("people_age").setValue(null);
}
},