Controllo su caratteri inseriti in un input di testo

Discussione in 'Snippet Javascript' iniziata da criric, 11 Maggio 2012.

  1. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.607
    Mi Piace Ricevuti:
    54
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    TN
    Cia atutti ,
    posto due funzioncine javascript per inibire l'inserimenti di caratteri non consentiti in un input di testo

    I caratteri verranno subito eliminati :evil:

    HTML:
    <html>
        <head>
            <title>prova</title>
            <script type="text/javascript">
                function char_consentiti(campo) {
                    // creo una array per i caratteri consentiti
                    var consentiti = new Array(1,2,3,4,5,6,7,8,9,0);
                    // recupero il valore del campo
                    var valore = campo.value;  
                    // ciclo le lettere del valore e le passo all funzione inArray()
                    for ( var i = 0; i < valore.length; i++ ) {
                        // se non è un carattere consentito
                        if (!inArray(consentiti, valore.charAt(i))) {
                            // aggiorno il valore del campo
                            campo.value = valore.substring(0, i);
                            // esco
                            return;
                        }   
                    }
                }        
                function inArray(array, value) {
                    // ciclo l'array passato       
                    for (var i = 0; i < array.length; i++) {
                        // se il valore passato è uguale ad uno degli elemnti dell'array
                        if (value == array[i]) {
                            // restituisco vero
                            return true;
                        }
                    }
                    // restituisco falso
                    return false;
                }  
            </script>
        </head>
        <body>
            Telefono : <input type="text" name="telefono" onkeyup="char_consentiti(this)"/>
        </body>
    </html>
    PS: commenti critiche suggeriementi sono ben accetti
     
    Ultima modifica: 11 Maggio 2012
  2. Vale2

    Vale2 Utente Attivo

    Registrato:
    28 Maggio 2006
    Messaggi:
    446
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Occupazione:
    Ex Studente - Cerca collaborazione per Asp e Asp.N
    Località:
    Livorno

    Ciao criric, buon lavoro,

    non volevo quotare, ma dovevo aprire una nuova discussione,

    non è meglio utilizzare una Regular Expression per controllare l'inserimento di dati invece che un'Array.

    un esempio buttato li ma usa poco codice:


    Codice:
    <script type="text/javascript">
    function controlla(questo){
    var re = new RegExp("^[0-9]+$", "");
    if (!questo.value.match(re)){ 
    questo.value = '';
    return false;
    }
    return true;
    }
    </script>
    </head>
    <body>
    <input type="text" name="n" onkeyup="controlla(this)">
    Valeria.
     
  3. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.607
    Mi Piace Ricevuti:
    54
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    TN
    Sei troppo brava Vale! :fonzie:

    le espressione regolari le ho mai digerite

    riposto con la modifica
    HTML:
    <html>
        <head>
            <title>prova</title>
            <script type="text/javascript">
                function char_consentiti(campo) {
                    // espressione regolare
                    var re = new RegExp("^[0-9]+$", "");
                    // recupero il valore del campo
                    var valore = campo.value;  
                    // ciclo le lettere del valore e le verifico
                    for ( var i = 0; i < valore.length; i++ ) {
                        // se non è un carattere consentito
                        if (!valore.charAt(i).match(re)) {
                            // aggiorno il valore del campo
                            campo.value = valore.substring(0, i);
                            // esco
                            return;
                        }   
                    }
                }  
            </script>
        </head>
        <body>
            Telefono : <input type="text" name="telefono" onkeyup="char_consentiti(this)"/>
        </body>
    </html>
    ma se volessi permettere anche la virgola e/o il punto? per un campo prezzo
     
  4. Vale2

    Vale2 Utente Attivo

    Registrato:
    28 Maggio 2006
    Messaggi:
    446
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Occupazione:
    Ex Studente - Cerca collaborazione per Asp e Asp.N
    Località:
    Livorno
    Ciao,

    per il . e la , basta aggiungerli nella RegExp

    anteceduti dal carattere di escape \

    var re = new RegExp("^[0-9\.\,]+$", "");

    Valeria
     
  5. criric

    criric Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    21 Agosto 2010
    Messaggi:
    5.607
    Mi Piace Ricevuti:
    54
    Punteggio:
    48
    Sesso:
    Maschio
    Località:
    TN
    Ottimo! prima o poi le imparerò anchio :byebye:
     
Sto caricando...

Condividi questa Pagina