• User Attivo

    [Javascript] - Campo email.

    Saluti a tutti 🙂
    Premetto che sono nuovo con il javascript;
    ho un modulo con 2 campi di cui il secondo è un campo email, riesco solo a
    verificare se è stato compilato, ma come posso verificare se è presente il "@" e "."
    ed in caso negativo bloccare l'invio del modulo tramite l'alert ?
    Un grazie anticipato a chi vorrà rispondermi; di seguito il codice:

    <form name="modulo" id="modulo" onSubmit="return controllo();" method="post" action="paginadiprova.html">
    Nome
    <input name="nome" type="text" id="nome" size="30" />
    <br />
    Email
    <input name="email" type="text" id="email" size="30" />
    <br />
    <input type="submit" name="Submit" value="Invia" />
    </form>
    <script language="JavaScript">
    function controllo(){
    with(document.modulo) {
    if(nome.value=="") {
    alert("Errore: compilare il campo NOME");
    nome.focus();
    return false;
    }
    if(email.value=="") {
    alert("Errore: compilare il campo email");
    email.focus();
    return false;
    }
    }
    return true;
    }
    </script>


  • User Attivo

    Nemmeno io sono un esperto di JavaScript, però prova a sostituire la riga:
    [HTML]if(email.value=="") {[/HTML]
    Con questa:
    [HTML]if (email.value == "" || email.value.indexOf ('@', 0) < 1 || email.value.indexOf ('.', 0) < 1) {[/HTML]


  • User Newbie

    Esiste una cosa chiamata regex (regular expressions) che è davvero molto,molto bella 😄 Scriverti per filo e per segno di cosa si tratta sarebbe un po' troppo lungo, ma se cerchi su google troverai guide complete sull'argomento e scoprirai che ti si aprirà un mondo davanti 😉
    Ho da poco scoperto (in verità, ho guardato su google dopo aver letto la tua domanda) che esistono anche in javascript 😄
    Eccoti un breve esempio appena scritto, con le mie neo apprese conoscenze delle regex in javascript :

    
    <script>
    function check (address) {
        var a = /^[a-z0-9_]{1,}\@[a-z0-9\.]{1,}\.[a-z]{2,4}$/;
        var x = a.exec (address);
        if (x==null) {
            document.write ("Email sbagliata!");
        }
        else {
            document.write ("Email accettata ;)");
        }
    
    
    }
    </script>
    <!--
    (fai attenzione, visto che non ho la possibilità di scrivere indirizzi email, l' alla riga successiva va inteso come @)
    -->
    <input type = 'button' onClick='check("address11host.com");' value='Prova'>
    
    

    Questo codice, molto semplice una volta che avrai imparato a usare le regex, stampa un messaggio "positivo" se l'indirizzo email ha la seguente struttura:

    (fai attenzione, visto che non ho la possibilità di scrivere indirizzi email, l' alla riga successiva va inteso come @)
    xxxxxyyyy.zzz

    Dove xxxxx è una stringa di 1 o + caratteri, contenente lettere dalla a alla z (minuscole), numeri e l'underscore (_); yyyy è una stringa (di almeno 1 carattere) formata da lettere minuscole, punti (.) e numeri, e zzz una stringa lunga da 2 a 4 lettere minuscole.
    La regex che ho scritto è molto semplice e probabilmente taglierà fuori alcuni casi speciali.. In giro per internet potrai certamente trovare regex più restrittive, oppure, una volta imparate, puoi scrivere la tua "ad hoc" 😄