javascript社會安全號碼碼驗證執行個體代碼

來源:互聯網
上載者:User

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<title>網頁特效社會安全號碼碼驗證執行個體代碼</title>
<script>
    function isidcardno(num)
    {
        var factorarr = new array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
        var error;
        var vararray = new array();
        var intvalue;
        var lngproduct = 0;
        var intcheckdigit;
        var intstrlen = num.length;
        var idnumber = num;
        // initialize
        if ((intstrlen != 15) && (intstrlen != 18))
        {
            return false;
        }
        // check and set value
        for(i=0;i<intstrlen;i++)
        {
            vararray[i] = idnumber.charat(i);
            if ((vararray[i] < '0' || vararray[i] > '9') && (i != 17))
            {
                return false;
            }
            else if (i < 17)
            {
                vararray[i] = vararray[i]*factorarr[i];
            }
        }
       
        if (intstrlen == 18)
        {
            //check date
            var date8 = idnumber.substring(6,14);
            if (checkdate(date8) == false)
            {
                //error = "身份證中日期資訊不正確!.";
                return false;
            }
            // calculate the sum of the products
            for(i=0;i<17;i++)
            {
                lngproduct = lngproduct + vararray[i];
            }
            // calculate the check digit
            intcheckdigit = 12 - lngproduct % 11;
            switch (intcheckdigit)
            {
                case 10:
                intcheckdigit = 'x';
                break;
                case 11:
                intcheckdigit = 0;
                break;
                case 12:
                intcheckdigit = 1;
                break;
            }
            // check last digit
            if (vararray[17].touppercase() != intcheckdigit)
            {
                return false;
            }
       }
       else
        {   //length is 15
            //check date
            var date6 = idnumber.substring(6,12);
            if (checkdate(date6) == false)
            {
                //alert("身份證日期資訊有誤!.");
                return false;
            }
        }
        return true;
    }
   
    function checkdate(date)
    {
        return true;
    }

    function test()
    {
        var id = document.getelementbyid('id').value;
        alert(id);
        alert(isidcardno(id));
    }
</script>
</head>

<body>
<tr>
            <td align="right" class="reg-item"><span class="color">*</span>身 份 證:</td>
            <td><input id="user_sfz" class="input_out" name="user_sfz" type="text" onfocus="onfuos('user_sfz')" onblur="regsfz()" onmousemove="this.classname='input_move'" onmouseo教程ut="this.classname='input_out'" style="width:250px;" /></td>
            <td><span id="sfz"></span></td>
          </tr>
</body>
</html>
社會安全號碼碼的規則】
1、15位社會安全號碼碼組成:
ddddddyymmddxxs共15位,其中:
dddddd為6位的地方代碼,根據這6位可以獲得該社會安全號碼所在地。
yy為2位的年份代碼,是身份證持有人的出身年份。
mm為2位的月份代碼,是身份證持有人的出身月份。
dd為2位的日期代碼,是身份證持有人的出身日。
這6位在一起組成了身份證持有人的出生日期。
xx為2位的順序碼,這個是隨機數。
s為1位的性別代碼,奇數代表男性,偶數代表女性。
 
2、18位社會安全號碼碼組成:
ddddddyyyymmddxxsp共18位,其中:
其他部分都和15位的相同。年份代碼由原來的2位升級到4位。最後一位為校正位。
校正規則是:
(1)十七位元字本體碼加權求和公式
s = sum(ai * wi), i = 0, ... , 16 ,先對前17位元字的權求和
ai:表示第i位置上的社會安全號碼碼數字值
wi:表示第i位置上的加權因子
wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)計算模
y = mod(s, 11)
(3)通過模得到對應的校正碼
y: 0 1 2 3 4 5 6 7 8 9 10
校正碼: 1 0 x 9 8 7 6 5 4 3 2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.