• JS身份证号码验证函数 支持带x的号码


    
    
    <script type="text/javascript">
    alert(isIdCardNo(
    "440781197007220512"));
    //--身份证号码验证-支持新的带x身份证
    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)) {
    //error = "输入身份证号码长度不对!";
    //alert(error);
    //frmAddUser.txtIDCard.focus();
    returnfalse;
    }
    // check and set value
    for(i=0;i<intStrLen;i++) {
    varArray[i]
    = idNumber.charAt(i);
    if ((varArray[i] <'0'|| varArray[i] >'9') && (i !=17)) {
    //error = "错误的身份证号码!.";
    //alert(error);
    //frmAddUser.txtIDCard.focus();
    returnfalse;
    }
    elseif (i <17) {
    varArray[i]
    = varArray[i]*factorArr[i];
    }
    }
    if (intStrLen ==18) {
    //check date
    var date8 = idNumber.substring(6,14);
    if (checkDate(date8) ==false) {
    //error = "身份证中日期信息不正确!.";
    //alert(error);
    returnfalse;
    }
    // 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) {
    case10:
    intCheckDigit
    ='X';
    break;
    case11:
    intCheckDigit
    =0;
    break;
    case12:
    intCheckDigit
    =1;
    break;
    }
    // check last digit
    if (varArray[17].toUpperCase() != intCheckDigit) {
    //error = "身份证效验位错误!...正确为: " + intCheckDigit + ".";
    //alert(error);
    returnfalse;
    }
    }
    else{ //length is 15
    //check date
    var date6 = idNumber.substring(6,12);
    if (checkDate(date6) ==false) {
    //alert("身份证日期信息有误!.");
    returnfalse;
    }
    }
    //alert ("Correct.");
    returntrue;
    }

    function checkDate(date)
    {
    returntrue;
    }
    </script>
    /////////根据身份证判断性别和生日
    <%@ Page language="c#" Codebehind="CordBirthday.aspx.cs" AutoEventWireup="false" Inherits="CodeDatum.birthday.CordBirthday"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>CordBirthday</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <script language="javascript">
    function showBirthday(val)
    {
    var birthdayValue;
    if(15==val.length)
    {
    //15位身份证号码
    birthdayValue = val.charAt(6)+val.charAt(7);
    if(parseInt(birthdayValue)<10)
    {
    birthdayValue
    ='20'+birthdayValue;
    }
    else
    {
    birthdayValue
    ='19'+birthdayValue;
    }
    birthdayValue
    =birthdayValue+'-'+val.charAt(8)+val.charAt(9)+'-'+val.charAt(10)+val.charAt(11);
    if(parseInt(val.charAt(14)/2)*2!=val.charAt(14))
    document.all.sex.value='';
    else
    document.all.sex.value
    ='';
    document.all.birthday.value
    =birthdayValue;
    }
    if(18==val.length)
    {
    //18位身份证号码
    birthdayValue=val.charAt(6)+val.charAt(7)+val.charAt(8)+val.charAt(9)+'-'+val.charAt(10)+val.charAt(11)

    +'-'+val.charAt(12)+val.charAt(13);
    if(parseInt(val.charAt(16)/2)*2!=val.charAt(16))
    document.all.sex.value='';
    else
    document.all.sex.value
    ='';
    if(val.charAt(17)!=IDCard(val))
    {
    document.all.idCard.style.backgroundColor
    ='#ffc8c8';
    }
    else
    {
    document.all.idCard.style.backgroundColor
    ='white';
    }
    document.all.birthday.value
    =birthdayValue;
    }
    }

    // 18位身份证号最后一位校验
    function IDCard(Num)
    {
    if (Num.length!=18)
    returnfalse;
    var x=0;
    var y='';

    for(i=18;i>=2;i--)
    x
    = x + (square(2,(i-1))%11)*parseInt(Num.charAt(19-i-1));
    x
    %=11;
    y
    =12-x;
    if (x==0)
    y
    ='1';
    if (x==1)
    y
    ='0';
    if (x==2)
    y
    ='X';
    return y;
    }

    // 求得x的y次方
    function square(x,y)
    {
    var i=1;
    for (j=1;j<=y;j++)
    i
    *=x;
    return i;
    }
    </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <table align="center">
    <tr>
    <td align="center">身份证:<input type="text" name="idCard" id="idCard"></td>
    </tr>
    <tr>
    <td align="center">性 别:<input type="text" name="sex" id="sex"></td>
    </tr>
    <tr>
    <td align="center">生 日:<input type="text" name="birthday" id="birthday"></td>
    </tr>
    <tr>
    <td align="center"><input type="button" onclick="showBirthday(document.all.idCard.value)" value="OK"></td>
    </tr>
    </table>
    </form>
    </body>
    </HTML>
  • 相关阅读:
    数据库设计
    java 的继承,深入理解
    ant 使用笔记
    Effective C++ 精要(第七部分:模板与泛型编程)
    Effective C++ 精要(第八部分:定制new和delete)
    求数组的子数组之和的最大值
    Effective C++ 精要(第四部分:设计与声明)
    STL的容器中存储对象和指针的利和弊
    (zz)Why Memory Barrier
    理解smart pointer之二:如何实现一个smart pointer
  • 原文地址:https://www.cnblogs.com/lfzm/p/2055939.html
Copyright © 2020-2023  润新知