Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Chiarimenti RegExp()

  1. #1
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187

    Chiarimenti RegExp()

    Ciao a tutti,
    dato che ho l'esigenza di validare un form in maniera abbastanza "pesante" ho letto qualcosa sulle RE, ma dato che mi porterebbe via molto tempo studiarle vorrei sapere se sono congeniali a quello che vorrei fare io.
    A me serve:
    - controllare che un campo (non tutti) non sia vuoto e quindi relativo alert se non lo compilo
    - controllare che contenga solo valori numerici
    - controllare che contenga solo valori numerici con due decimali (importi in euro per intenderci)
    - che appaia un messaggio quando spunto (o tolgo la spunta) da un checkbox
    - controllare che il campo email sia corretto e che, importante, contenga non oltre i 4 caratteri dopo il punto (es. it, com, net, info , ecc)

    Secondo voi le RE possono tutto questo oppure devo integrarle con altre funzioni sparse?

    Avete qualche link in italiano o script da poter vedere e adattare?
    Ciao e grazie

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924

    Re: Chiarimenti RegExp()

    Originariamente inviato da nadia79
    A me serve:
    1) - controllare che un campo (non tutti) non sia vuoto e quindi relativo alert se non lo compilo
    2) - controllare che contenga solo valori numerici
    3) - controllare che contenga solo valori numerici con due decimali (importi in euro per intenderci)
    4) che appaia un messaggio quando spunto (o tolgo la spunta) da un checkbox
    5) controllare che il campo email sia corretto e che, importante, contenga non oltre i 4 caratteri dopo il punto (es. it, com, net, info , ecc)

    Le espressioni regolari possono servirti per i punti 3) e 5)
    se hai un input con id = "campo" (esempi 1,2,3,5)
    codice:
    1) campo = document.getElementById('campo').value;
       if (campo=="") alert("campo vuoto");
    
    2) campo = document.getElementById('campo').value;
       if (isNaN(campo)) alert("campo non numerico");
    
    3) campo = document.getElementById('campo').value;
       if (!(campo.match(/(\d+),(\d{2})/))) alert("campo errato")
    
    ----
    
    4) <input type="checkbox" onclick="alert('ti ho vista, mi hai cliccato!')">
    
    5) campo = document.getElementById('campo').value;
       if (!(campo.match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/))) alert("email errata")
    Può andare bene così??
    Ciao



    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Grazie!

    Sto cercando di applicare il tuo script (una parte) così:

    codice:
    <script language="JavaScript" type="text/javascript">
    <!--
    	campo = document.getElementById('modello').value;
       if (campo=="") alert("campo vuoto");
    
    	campo1 = document.getElementById('quantita').value;
       if (isNaN(campo1)) alert("campo non numerico");
    
    	campo2 = document.getElementById('prezzo').value;
       if (!(campo2.match(/(\d+),(\d{2})/))) alert("campo errato")
    //-->
    </script>
    però ora come lo richiamo nel form con onsubmit (penso di no) o con tipo onclick nei vari campi?

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Non si usa l'onsubmit nè il bottone submit in questo caso. Se devi fare validazione lato client usi un normale pulsante che attiva la funzione. Ecco un esempio


    codice:
    <head>
    function valida() {
    
       campo = document.getElementById('modello').value;
       if (campo=="") {
          alert("campo vuoto");
       } 
       else {
          document.getElementById('id_del_form').submit();
       }
    }
    </head>
    
    <body>
    ...
    
    <form ...>
    
    <input type="button" value="invia" onclick="valida()" />
    </form>
    Se ti serve qualcosa di già pronto eventualmente guarda la mia pillola in firma...

    Ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Allora prima di leggere la tua ultima risposta ho modificato in questo modo lo script:

    [CODE
    <script language="JavaScript" type="text/javascript">
    <!--
    function controllaTutto() {
    campo = document.getElementById('modello').value;
    if (campo==""){
    alert("campo vuoto");
    return false;
    }

    campo1 = document.getElementById('quantita').value;
    if (isNaN(campo1)){
    alert("Devi inserire un valore numerico");
    return false;
    }

    campo2 = document.getElementById('prezzo').value;
    if (!(campo2.match(/(\d+),(\d{2})/)) || (!(campo2.match(/(\d+)/))){
    alert("Devi inserire un importo valido")
    return false;
    }
    }
    //return true;
    //-->
    </script>[/CODE]

    Sembra funzionare tranne che l'ultimo controllo, infatti volevo dare la possibilità anche di non inserire i due decimali, però così sembra che non funzioni più.

    Ho letto e scaricato la tua validazione, ma è tutto in inglese e per me diventa impossibile... già sono una frana con Javascript... con l'inglese non ti dico

    Comunque ora cerco di vedermela con calma grazie

  6. #6
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Eccomi di nuovo,
    stavo vedendo la tua "pillola" ed ho visto la validazione della data io ho utilizzato questo codice per il controllo della data:

    codice:
    <script language="JavaScript" type="text/javascript">
    <!--
    function controlla()
       {
       obj=document.inserisci.inizio.value.replace(/[^\d]/g,"0");;
       gg=obj.substr(0,2)
       mm=obj.substr(3,2);
       aa=obj.substr(6,4);
       
       strdata=gg+"/"+mm+"/"+aa;
       
       inizio = new Date(aa,mm-1,gg);
       daa=inizio.getFullYear().toString();
       dmm=(inizio.getMonth()+1).toString();
       dmm=dmm.length==1?"0"+dmm:dmm
       dgg=inizio.getDate().toString();
       dgg=dgg.length==1?"0"+dgg:dgg
       dddata=dgg+"/"+dmm+"/"+daa
       if (dddata!=strdata)
          {
          alert("Verificare la data inserita!");
          document.inserisci.inizio.value=dddata; // Nel campo viene scritta la data generata
    	  document.inserisci.inizio.value=""; // Il campo viene cancellato e...
    //document.inserisci.data.focus(); //...viene ridato il focus per il reinserimento
          }
       }
    //-->
    </script>
    il mio problema è che ho due campi data quindi ho "doppiato" la funzione per usarla su entrambi i campi, funziona però poi mi sono resa conto che dovrei anche fare un controllo sulla data fine che se è minore della data inizio deve avvisare l'utente.

    Ora qualcosa avevo anche letto nel forum (e provato), ma c'è la ricerca disabilitata da 3 giorni e non riesco a ritrovare il post!

    Uff... lo trovo difficile Javascript

  7. #7
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Qualche consiglio per creare una sola funzione (anzichè due) per controllo del formato della data e soprattutto per il confronto delle due date inserite?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.