← Tutti gli articoli

Codice Fiscale Asp.Net Custom Validator Javascript

13 ottobre 2010  · Asp.Net · Article  ·  546 visite

Codice Fiscale Asp.Net Custom Validator Javascript

   
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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 runat="server">
    <title></title>
    <script src="Scripts/JScript.js" type="text/javascript"></script>
     <script src="Scripts/Cf.js" type="text/javascript"></script>
     <script type="text/javascript">
     function ValidaCodiceFiscale(source, args){
       var cf = document.form1.<%= txtCodiceFiscale.ClientID %>.value;
      
       args.IsValid=ControllaCodiceFiscale(cf);
      
      
       return; 
     }
   </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
       
    Codice Fiscale<br />
    <asp:TextBox ID="txtCodiceFiscale" MaxLength="16" runat="server"></asp:TextBox>
     <asp:CustomValidator ID="CustomValidator1" 
                                    runat="server"
                                    ErrorMessage="(*) Attenzione! Il campo Codice Fiscale non � corretto!"
                                   
                                    Text="* CF errato"
                                    ForeColor="Red"                                                                    
                                    ClientValidationFunction="ValidaCodiceFiscale"                                      
                                    ControlToValidate="txtCodiceFiscale"
                  />
 
  
   <br />
   <asp:Button ID="btnSubmit" Text="Submit" runat="server" />
   </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    </form>
</body>
</html>


  


function ControllaCodiceFiscale(cf) {
    if ((cf == "") || (cf == undefined)) return false;
    
    //tab. caratteri per determinare la posizione nelle tabelle seguenti
    var caratt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    //tab. conversione caratteri in posizione pari 
    var pari = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
    //tab. conversione caratteri in posizione dispari 
    var disp = new Array(1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11, 3, 6, 8, 12, 14, 16, 10, 22, 25, 24, 23, 1, 0, 5, 7, 9, 13, 15, 17, 19, 21);
    //tab. conversione caratteri di controllo 
    var contr = new Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    var result;
    var CF = cf;

    dispsum = 0;
    for (i = 0; i < 15; i = i + 2) {
        c = CF.substr(i, 1);
        j = caratt.indexOf(c);
        dispsum = dispsum + disp[j];
    }
    parisum = 0;
    for (i = 1; i < 14; i = i + 2) {
        c = CF.substr(i, 1);
        j = caratt.indexOf(c);
        parisum = parisum + pari[j];
    }
    tots = 0;
    tots = parisum + dispsum;
    //Prendo il resto della divisione per 26 
    tots = tots % 26;
    if (contr[tots] == CF.substr(15, 1)) {
        result = true;
        //alert(' Cod. Fisc. CORRETTO!');
    }
    else {
        //alert('Codice Fiscale ERRATO!!');
        result = false;
    }

    var codice = CF.substr(11, 4);




    return result;
    //event.returnValue=result;
}