1. 程式人生 > >javascript 身份證驗證及自動設定性別和年齡

javascript 身份證驗證及自動設定性別和年齡

監控頁面上身份證填寫數值,利用正則限制填寫僅為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); } },