javascript 身份證驗證及自動設定性別和年齡
阿新 • • 發佈:2019-02-15
監控頁面上身份證填寫數值,利用正則限制填寫僅為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);
}
},