Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333

    il minimo codice per controllare una stringa

    Ciao a tutti
    ho un input ma potrebbe essere anche un textarea
    Per fare un test Io mi aspetto che venga battuta una stringa per esempio "gatto"
    Quindi per battere "gatto" l'utente deve battere una alla volta le seguenti lettere:
    g
    a
    t
    t
    o

    Il codice che vi chiedo deve controllare che la sequenza sia corretta e nel caso non lo sia deve azzerare la parola e costringere l'utente a ricominciare da capo nel momento stesso in cui l'utente sbaglia la battuta quindi il controllo deve essere continuo fin dall'inizio lettera per lettera.

    Sarebbe semplice controllare tutta la stringa una volta che è stata battuta tutta usando una regex ma come si fa a usare una regex che controlli la stringa mentre viene battuta fin dalla prima lettera e interrompere la digitazione in caso di errore?

    PS
    nella realtà la parola sarà molto più complessa
    Ultima modifica di jomla; 28-09-2014 a 13:31

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Se non hai un db vocabolario quello che chiedi è impossibile
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, personalmente non userei regex. Puoi risolvere con un semplice substring.
    Attraverso una variabile indice, di volta in volta controlli che il valore del tuo campo corrisponda alla porzione della stringa (che va dal suo primo carattere fino al carattere determinato dalla variabile indice). L'indice chiaramente si incrementa ad ogni "digitazione".

    Ti posto un esempio da cui puoi prendere spunto:
    codice:
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>Esempio</title>
        <meta charset="utf-8">
        <script type="text/javascript">
          var str = "gatto";
          var id = 0; // indice corrente della digitagione
          function controllo(){
            this.value!=str.substring(0,++id)&&(id=0,this.value="");
          }
          window.onload = function(){
            c = document.getElementById("tuocampo");
            c.onpaste = function (){return false}; // meglio bloccare eventi sconvenienti
            (c.oninput = controllo)(); // eseguo il controllo ad ogni "input". L'evento oninput non funziona su versioni di IE precedenti alla 9
          }
        </script>
      </head>
      <body>
        <input id="tuocampo" type="text" value="">
        <!-- o con una textarea
        <textarea id="tuocampo"></textarea>
        -->
      </body>
    </html>
    Non so se possa soddisfare la tua idea di "minimo codice", nel caso puoi comunque usare diverse tecniche o librerie tipo jQuery o strumenti per minimizzare il tutto.

    @Andrea: non ho capito il tuo intervento riguardo il "db vocabolario". Forse mi sfugge qualcosa...
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Quote Originariamente inviata da jomla Visualizza il messaggio
    ...
    PS
    nella realtà la parola sarà molto più complessa
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    ....
    @Andrea: non ho capito il tuo intervento riguardo il "db vocabolario". Forse mi sfugge qualcosa...
    Se non ha una tabella "vocabolario" che contenga i vari vocaboli cosa controlla?
    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.