Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313

    I caratteri della mia tastiera non coincidono con i relativi codici ascii Controllo codice fiscale

    Salve a tutti, ennessimo problema con javascript stò realizzando uno script per analizzare i caratteri inseriti dentro ad un input, il mio intento e quello di fare il controllo in tempo reale i caratteri inseriti per il codice fiscale.

    sto utilizzando la keypress per rilevare l'evento, converto tutto in codice ascii e poi analizzo l'equivalente per vedere se il carattere inserito corrisponde al quello che a me interessa, ovviamente c'è differenza fra i caratteri maiuscoli e minuscoli, quando digito quelli minuscoli, i codici che vengono fuori non coincidono con con la tabella ASCII, come mai ???
    ecco il mio codice
    codice:
           $('.codice_fiscale').keypress(function(evt){
               var n_caratteri = $(this).val().length;//rprelevo il contenuto per contare i caratteri
               
               var charCode=(evt.which)?evt.which:event.keyCode;//converto in codice ascii
               if(n_caratteri<6 || (charCode<31)){//accetta solo i 6 caratteri e caratteri speciali
                   if(is_character(charCode)){//Dovrebbe accettare solo lettere minuscole ma non coincidono i codic ascii
                       return true;
                   }else if(is_CHARACTER(charCode)){//accetta solo lettere maiuscole funziona
                       return true;
                   }else{                   
                       return false;
                   }
               
               }else{
                   return false;
               }
           });
    function is_numeric(charCode){
            if(charCode<31 || (charCode>47 && charCode<58)){
                return true;
            }else{
                return false;
            }
            
        }
        function is_character(charCode){
            if((charCode<31 ) || (charCode>64 && charCode<91))
                return true;
                return false;                          
        }
        function is_CHARACTER(charCode){
            if((charCode<31 ) || (charCode>96 && charCode<113))
                return true;
                return false; 
        }

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    Risolto errore mio, stavo guardando una tavola di codici sbaglio, poi ho fatto una verifica con gli alert e ho risolto ecco il codice per contrallare permettere di digitare solo un codice fiscale valido, ovviamente non ho caricato la lista dei comuni e fatto i controlli sul nome e altro ma solo un controllo sulle lettere del mese:

    codice:
           $('.codice_fiscale').keypress(function(evt){
               var n_caratteri = $(this).val().length;
               var charCode=(evt.which)?evt.which:event.keyCode;
              
               if(n_caratteri<6 || (charCode<31)){
                   if(is_character(charCode)){                   
                       return true;
                   }else{
                       return false;
                   }           
               }else if(n_caratteri<8 || (charCode<31)){
                   if(is_numeric(charCode)){
                       return true;
                   }else{
                       return false;
                   }    
               }else if(n_caratteri<9 || (charCode<31)){
                   if(is_mouth(charCode)){
                       return true;
                   }else{
                       return false;
                   }    
               }else if(n_caratteri<11 || (charCode<31)){
                   if(is_numeric(charCode)){
                       return true;
                   }else{
                       return false;
                   }               
               }else if(n_caratteri<12 || (charCode<31)){
                   if(is_character(charCode)){                   
                       return true;
                   }else{
                       return false;
                   }
               }else if(n_caratteri<15 || (charCode<31)){
                   if(is_numeric(charCode)){                   
                       return true;
                   }else{
                       return false;
                   }
               }else if(n_caratteri<16 || (charCode<31)){
                   if(is_character(charCode)){                   
                       return true;
                   }else{
                       return false;
                   }
               }else{    
                   return false;
               }
    
           });
     //*****************************************************************************
     //     controllo numeri       /
     //****************************/
        function is_numeric(charCode){
            if(charCode<31 || (charCode>47 && charCode<58)){
                return true;
            }else{
                return false;
            }
            
        }
        function is_character(charCode){
            if((charCode<31 ) || (charCode>64 && charCode<91) || (charCode>96 && charCode<123))
                return true;
                return false;                          
        }
        function is_mouth(charCode){
            //a_b_c_d_e_h_l_m_p_r_s_t
            if((charCode<31 ) || 
                    (charCode>96 && charCode<102) || 
                    (charCode>64 && charCode<70) ||
                        
                    (charCode==104 || charCode==72) ||
                    
                    (charCode>107 && charCode<110) || 
                    (charCode>75 && charCode<78) ||
                        
                    (charCode==112 || charCode==80) ||  
                    
                    (charCode>113 && charCode<117) || 
                    (charCode>81 && charCode<85))
                return true;
                return false;                          
        }
    Adesso mi sto bloccando su ll'inserimento di uno spazio, mi spiego meglio, adesso a viode posso digitare solo questo

    xxxxxx00x00x000x
    XXXXXX00X00X000X

    come potrei fare per obbligare la digitazione in automatico degli spazi ???

    nel senso, dopo aver digidato il primo gruppo di tre lettere, compe posso fare per inserire uno spazio e spostare il cursore ?

    Diciamo che questo dovrebbe essere il risultato obbligato

    XXX XXX 00X00 X000X oppure xxx xxx 00x00 x000x potreste darmi qualche indizio o consiglio ???

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Metti degli input text separati per come vuoi che sia formattato poi sposti il cursore input2, input3, etc... Al raggiungimento dei caratteri (es input1 quando arrivi al terzo carattere inserito sposti il focus su input2)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    Soluzione già provata però ho problemi con il lettore di codice a barre e lettore di tessere, quando leggo il codice non capisco perchè perdo i caratteri per strada spostando il cursore da un'input all'altro, cioè a volte mi da tutti i caratteri e a volte no....

    Cosa ne pensi se come soluzione aggiungo uno spazio prima del return true ? ?

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Visto che usi dei lettori prova a mettere un campo nascosto che riceve tutto il codice dai lettori poi al onchange lanci una funzione che lo formatta nel capi input altra soluzione usando un campo unico sempre al onchange quando hai raggiunto il 16° carattere lancia una funzione che formatta con gli spazi
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.