js實現填寫社會安全號碼、手機號、准考證號等資訊自動空格的效果

來源:互聯網
上載者:User

標籤:style   class   blog   c   code   java   

  咱們做網站的,使用者體驗那是相當重要的,比如12306搶票需要填寫身份證,如果不空格,密密麻麻的給我一種很壓抑的感覺,而且也不容易核對資訊是否填寫正確,所以我就寫了一個利用Js實現填寫社會安全號碼、手機號、准考證號等資訊自動空格的效果。

為了方便,自已定義的一個簡單的get()方法和trim()方法,代碼如下:

//擷取對應的對象--function函數.function get(id) {    return document.getElementById(id);}//去掉所有空格--String類的屬性.String.prototype.trim = function () {    return this.replace(/\s+/g, "");};

 

執行個體1:社會安全號碼自動空格,支援18位的社會安全號碼碼,格式為"xxx xxx xxxx xxxx xxxx".

//身份證自動空格.function FillIdentity() {    var idNumber = get("IDNumber");//頁面上輸入社會安全號碼碼的文字框的Id.    var idValue = idNumber.value.trim();    if (idValue != "") {        var idLength = idValue.length;        if (idLength <= 3) {            idNumber.value = idValue;        } else {            if (idLength <= 6) {                idNumber.value = idValue.substring(0, 3) + " " + idValue.substring(3, idLength);            } else {                if (idLength <= 10) {                    idNumber.value = idValue.substring(0, 3) + " " + idValue.substring(3, 6) + " " + idValue.substring(6, idLength);                } else {                    if (idLength <= 14) {                        idNumber.value = idValue.substring(0, 3) + " " + idValue.substring(3, 6) + " " + idValue.substring(6, 10) + " " + idValue.substring(10, idLength);                    } else {                        idNumber.value = idValue.substring(0, 3) + " " + idValue.substring(3, 6) + " " + idValue.substring(6, 10) + " " + idValue.substring(10, 14) + " " + idValue.substring(14, idLength);                    }                }            }        }    }}

 

執行個體2:手機號碼自動空格,支援11位的手機號碼,格式為"xxx xxxx xxxx".

//手機號自動空格.function FillMobile() {    var mobile = get("Mobile");//頁面上輸入手機號碼的文字框的Id.    var mValue = mobile.value.trim();    if (mValue != "") {        var mLength = mValue.length;        if (mLength <= 3) {            mobile.value = mValue;        } else {            if (mLength <= 7) {                mobile.value = mValue.substring(0, 3) + " " + mValue.substring(3, mLength);            } else {                mobile.value = mValue.substring(0, 3) + " " + mValue.substring(3, 7) + " " + mValue.substring(7, mLength);            }        }    }}

 

執行個體3:准考證號自動空格,沒有固定的格式,簡單來說就是"四位一空格",格式為"xxxx xxxx xxxx".

//准考證號自動空格.function FillTicket() {    var ticket = get("Ticket");//頁面上輸入准考證號的文字框的Id.    var tValue = ticket.value.trim();    if (tValue != "") {        var tLength = tValue.length;        var count = parseInt(tLength / 4);        if (count >= 1) {            ticket.value = "";            for (var i = 1; i <= count; i++) {                ticket.value += tValue.substring((i - 1) * 4, (i) * 4);                if (tLength > (i * 4)) {//不加此判斷會出現遇到空格按退格鍵無效的Bug.                    ticket.value += " ";                }            }            ticket.value += tValue.substring(count * 4, tLength);        }    }}

 

其他代碼:

驗證社會安全號碼碼是否正確,包括驗證出生日期是否合法,校正碼是否正確.

//能提示校正碼的社會安全號碼碼驗證方法.function FillNumber() {    var num = get("IDNumber").value.trim();//頁面上輸入社會安全號碼碼的文字框的Id.    if (num == "") {        alert("請輸入社會安全號碼!");        return false;    }    num = num.toUpperCase();    //社會安全號碼碼為15位或者18位,15位時全為數字,18位前17位為數字,最後一位是校正位,可能為數字或字元X(身份證上是大寫)。       if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {        alert(‘溫馨提示:\n\n輸入的社會安全號碼長度不對,或者號碼不符合規定!\n15位號碼應全為數字,18位號碼末位可以為數字或X!‘);        return false;    }    //校正位按照ISO 7064:1983.MOD 11-2的規定產生,X可以認為是數字10。     //下面分別分析出生日期和校正位     var len, re;    len = num.length;    if (len == 15) {        if (isNaN(num)) {            alert("15位社會安全號碼碼只能為數字!");            return false;        }        re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);        var arrSplit = num.match(re);        //檢查生日日期是否正確.        var dtmBirth = new Date(‘19‘ + arrSplit[2] + ‘/‘ + arrSplit[3] + ‘/‘ + arrSplit[4]);        var bGoodDay;        bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));        if (!bGoodDay) {            alert(‘溫馨提示:\n\n您輸入的社會安全號碼碼裡出生日期不對,請確認後重新輸入!‘);            return false;        }        else {            //將15位身份證轉成18位             //校正位按照ISO 7064:1983.MOD 11-2的規定產生,X可以認為是數字10。             var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);            var arrCh = new Array(‘1‘, ‘0‘, ‘X‘, ‘9‘, ‘8‘, ‘7‘, ‘6‘, ‘5‘, ‘4‘, ‘3‘, ‘2‘);            var nTemp = 0, i;            num = num.substr(0, 6) + ‘19‘ + num.substr(6, num.length - 6);            for (i = 0; i < 17; i++) {                nTemp += num.substr(i, 1) * arrInt[i];            }            num += arrCh[nTemp % 11];            alert("當前15位社會安全號碼碼正確!");            return num;        }    }    if (len == 18) {        if (isNaN(num.substring(0, 17))) {            alert("社會安全號碼碼前17位只能為數字!");            return false;        }        re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);        var arrSplit = num.match(re);        //檢查生日日期是否正確         var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);        var bGoodDay;        bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));        if (!bGoodDay) {            //alert(dtmBirth.getYear());            //alert(arrSplit[2]);            alert(‘溫馨提示:\n\n您輸入的社會安全號碼碼裡出生日期(‘ + arrSplit[2] + arrSplit[3] + arrSplit[4] + ‘)不對,請確認後重新輸入!‘);            return false;        }        else {            if (isNaN(num.substring(17))&&num.substring(17) != "X") {                alert("18位社會安全號碼碼的校正碼只能為0至9或者字母‘X’");                return false;            }            //檢驗18位身份證的校正碼是否正確。             //校正位按照ISO 7064:1983.MOD 11-2的規定產生,X可以認為是數字10。             var valnum;            var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);            var arrCh = new Array(‘1‘, ‘0‘, ‘X‘, ‘9‘, ‘8‘, ‘7‘, ‘6‘, ‘5‘, ‘4‘, ‘3‘, ‘2‘);            var nTemp = 0, i;            for (i = 0; i < 17; i++) {                nTemp += num.substr(i, 1) * arrInt[i];            }            valnum = arrCh[nTemp % 11];            if (valnum != num.substr(17, 1)) {                alert(‘溫馨提示:\n\n18位身份證的校正碼不正確,應該為:‘ + valnum + ",請您確認後重新輸入!");                return false;            }            alert("當前18位社會安全號碼碼正確!");            return num;        }    }}

 

 

感謝您懷著耐心看完整篇博文!!!
如果文章有什麼錯誤或不當之處,請您斧正!
您有任何意見或者建議,您可以給我發郵件,也可以在下面留言,我看到了會第一時間回複您的,謝謝! 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.