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);
		}
            
},







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章