把15位身份证转成18位的JS代码

原文地址:http://www.java2000.net/p11027
网友提供的一段代码。
  1. <html>

  2. <head>

  3. <title>把15位身份证转成18</title>
  4. <script language="javascript">
  5.     var v = new Array();
  6.     var vs = "10X98765432";
  7.     var newCardID = "";
  8.     function onload()
  9.     {
  10.         document.getElementById("cardID").focus();
  11.     }
  12.     function checkCardID(cardID15)
  13.     {
  14.          v.push(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7);
  15.          var cardID = cardID15.value;
  16.          if(cardID.length!=15)
  17.         {
  18.             alert("请输入15位你的身份证号码!");
  19.             cardID15.focus();
  20.             return;
  21.         }
  22.         var month = cardID.substring(8,10);//获得15位号码中的月份
  23.         if(!checkMonth(month))
  24.          {
  25.               alert("你输入的身份证格式不正确,月份填写错误!")
  26.               cardID15.focus();
  27.               return;
  28.          }
  29.        var year = "19" + cardID.substring(6,8);
  30.        var day = cardID.substring(10,12);
  31.        if(!checkDay(year,month,day))
  32.        {
  33.         alert("你输入的身份证的个格式不正确,日期格填写错误");
  34.         cardID15.focus();
  35.         return;
  36.        }
  37.      //alert(checkDay(year,month,day));
  38.     //将15位的号码转换位17位
  39.     var cardIDcardID17 = cardID.substring(0,6)+"19"+cardID.substring(6);
  40.     var N = 0;
  41.     var R = -1;
  42.     var T = '0';//储存最后一个数字
  43.     var j = 0;
  44.     var cardID18="";
  45.     //计数出第18位数字
  46.     for (var i = 16; i >= 0; i--)
  47.     {
  48.             N += parseInt(cardID17.substring(i, i + 1)) * v[j];
  49.             j++;
  50.     }
  51.     R = N % 11;
  52.     T = vs.charAt(R);
  53.     cardID18 = cardID17 + T;
  54.     document.getElementById("cardID18").value=cardID18;
  55.     newCardID = cardID18;
  56. }
  57. //判断输入的月份是否正确
  58. function checkMonth(month)
  59. {
  60.     if(month<1||month>12)
  61.     {
  62.         return false;
  63.     }
  64.     return true;
  65. }
  66. /**
  67. **检查你输入的天数是否正确
  68. **yean为年
  69. **month为月
  70. **day为日
  71. **/
  72. function checkDay(year,month,day)
  73. {
  74.     var Mday = 0;
  75.     if(day<1||day>31)
  76.     {
  77.         return false;
  78.     }
  79.     if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
  80.     {
  81.          Mday = 31;
  82.     }
  83.     if(month==4||month==6||month==9||month==11)
  84.     {
  85.          Mday = 30;
  86.     }
  87.     if(month==2)
  88.     {
  89.          Mday = isLeapYear(year);
  90.     }
  91.     if(day>Mday)
  92.     {
  93.         return false;
  94.     }
  95.     return true;
  96. }
  97. //判断你输入的年是否位闰年
  98. function isLeapYear(year)
  99. {
  100.     return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ? 29 : 28;
  101. }
  102. function checkNewCardID()
  103. {
  104. alert("18位身份证号码为:"+newCardID);
  105. }
  106. </script>
  107. </head>

  108. <body onload="onload()">
  109. 15位号码:<input id="cardID" type="text" maxlength="15" onmouseout="checkCardID(this)"/></br>
  110. 18位号码:<input id="cardID18" type="text" readonly="readonly" />

  111. <input type="button" onclick="checkNewCardID();" value="提交"/>
  112. </body>

  113. </html>

你可能感兴趣的:(JavaScript,html,.net,J#)