<script type="text/javascript">// 去左右空格 function trim(str){return str.replace(/^\s+|\s+$/g,'');}var powers=new Array("7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"); var parityBit=new Array("1","0","X","9","8","7","6","5","4","3","2"); var sex="male"; //校正社會安全號碼碼的主調用 function validId(obj){ var _id=obj.value; if(trim(_id)==""){ obj.value=""; document.getElementById("idCardMsg").innerHTML = "請輸入社會安全號碼。"; return false; } if(_id.length.length != 15 && _id.length != 18){ document.getElementById("idCardMsg").innerHTML = "請輸入15位或者18位社會安全號碼碼。"; return false; } var _valid=false; if(_id.length==15){ _valid=validId15(_id); }else if(_id.length==18){ _valid=validId18(_id); } if(!_valid){ document.getElementById("idCardMsg").innerHTML = "社會安全號碼碼有誤,請檢查!"; obj.focus(); return false; } document.getElementById("idCardMsg").innerHTML = "輸入正確。"; return true; } //校正18位的社會安全號碼碼 function validId18(_id){ _id=_id+""; var _num=_id.substr(0,17); var _parityBit=_id.substr(17); var _power=0; for(var i=0;i< 17;i++){ //校正每一位的合法性 if(_num.charAt(i)<'0'||_num.charAt(i)>'9'){ return false; break; }else{ //加權 _power+=parseInt(_num.charAt(i))*parseInt(powers[i]); } } //模數 var mod=parseInt(_power)%11;if(parityBit[mod]==_parityBit){ return true; } return false; } //校正15位的社會安全號碼碼 function validId15(_id){ _id=_id+""; for(var i=0;i<_id.length;i++){ //校正每一位的合法性 if(_id.charAt(i)<'0'||_id.charAt(i)>'9'){ return false; break; } } var year=_id.substr(6,2); var month=_id.substr(8,2); var day=_id.substr(10,2); var sexBit=_id.substr(14); //校正年份位 if(year<'01'||year >'90')return false; //校正月份 if(month<'01'||month >'12')return false; //校正日 if(day<'01'||day >'31')return false; return true; } </script>
<input type="text" onblur="javascript:validId(this)" maxlength="20"/><span id="idCardMsg"></span>