• User

    checkbox obbligatoria in un form

    Ciao a tutti,
    sto facendo un piccolo script php per la registrazione e gestione utenti in un sito però ho un problema:
    nel form di registrazione ho inserito alla fine la classica checkbox già checkata per l'autorizzazione al trattamento dei dati personali. Siccome volevo inserire un controllo che in caso l'utente non accetti appaia un messaggio che comunica all'utente che deve essere per forza accettata per registrarsi volevo chiedervi se qualcuno poteva darmi una mano suggerendomi un piccolo script javascript o no che mi potesse controllare la checkbox.
    Grazie a tutti spero che qualcuno mi possa aiutare


  • User

    <SCRIPT LANGUAGE="JavaScript">
    function ver() //controlla se tutti i campi sono stati compilati
    {
    for (i=0; i<document.forms[0].elements.length; ++i)
    if(document.forms[0].elements*.value == "")
    {
    alert("Riempire tutti i campi!");
    document.forms[0].elements*.focus();
    return false;
    }
    return true;
    }
    </SCRIPT>
    <SCRIPT>
    function controllamail() //controlla la sintassi dell'indirizzo email
    {
    EmailAddr = document.modulo.email.value;
    Filtro = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-]{2,})+.)+([a-zA-Z0-9]{2,})+$/;
    if (Filtro.test(EmailAddr))
    return true;
    else
    {
    alert("Controlla l'indirizzo e-mail inserito!");
    document.modulo.email.focus();
    return false;
    }
    }
    </SCRIPT>
    <SCRIPT>
    function ctr(quale)
    {
    if (quale.checked) else
    {quale.checked=false;
    }
    }
    </SCRIPT>

    </head>

    <body>
    <form action="data_insert.php?action=add&type=user" method="post" name="Registrazione" onsubmit="return (ver() && controllamail() && ctr())">
    <fieldset><legend>Dati</legend>

    <label for="name">Nome</label><input name="name" type="text"  size="25" maxlength="25" tabindex="1" onFocus="if (this.value=='Inserisci il tuo nome') {this.value=''}" onBlur="if ((this.value=='') || (this.value==NULL)) {this.value='Inserisci il tuo nome'}" value="Inserisci il tuo nome"/><br /><br />
    
    <label for="email">Email</label><input name="email" type="text" value="Inserisci indirizzo email" size="25" maxlength="25" tabindex="2" onFocus="if (this.value=='Inserisci indirizzo email') {this.value=''}" onBlur="if ((this.value=='') || (this.value==NULL)) {this.value='Inserisci indirizzo email'}"/><br /><br />
    
    <label for="password">Password</label><input name="password" type="password" size="25" maxlength="8" tabindex="3"/><br /><br />
    
    <label for="password_confirm">Conferma Password</label><input name="password_confirm" type="password" size="25" maxlength="8" tabindex="4"/>
    

    </fieldset>

    <fieldset><legend>Privacy</legend>
    <input name="privacy" type="checkbox" value="Privacy" checked="checked" onClick="ctr(this)" /><p>Trattamento dati personali.</p>
    <input name="submit" type="submit" value="Registrati!" />
    </fieldset>

    </form>

    Questo è lo script che sto utilizzando. Ho cercato di usare uno script js trovato in rete ma sinceramente vista la mia ignoranza in js nn so cosa faccia e infatti nn lavora correttamente.

    In pratica in questo script dovrei effettuare 3 controlli:

    • quello sui campi obbligatori(funzionante)
    • quello sulla email (nn funzionante anche se non capisco il perchè)
    • quello sulla checbox finale (non funzionante che non so come fare)
    • Infine come mai non vedo gli asterischi nel campo password????

    Spero che qualcuno mi possa aiutare ne ho un bisogno urgente


  • User Attivo

    ciao, ho letto il codice, per la verità lo noto troppo diverso da mio
    cmq ti posto ciò che uso io
    molto + semplice, però dovresti fare delle modifiche soprattutto al controllo mail
    [HTML]
    function invia()
    {
    if (!Form1.cognome.value) {alert("Inserire cognome.");
    return false;}
    if (!Form1.nome.value) {alert("Inserire nome.");
    return false;}
    if (!Form1.indirizzo.value) {alert("Inserire indirizzo.");
    return false;}
    if (!Form1.citta.value) {alert("Inserire citta.");
    return false;}
    if (!Form1.provincia.value) {alert("Inserire la sigla della provincia.");
    return false;}
    if (!Form1.codicefiscale.value) {alert("Inserire codice fiscale.");
    return false;}
    if (!Form1.telefono.value) {alert("Inserire telefono.");
    return false;}
    if (!Form1.email.value || Form1.email.value.indexOf ('@', 0) == -1) {alert("Attenzione! Email non è corretto");
    return false;}
    if (!Form1.testo.value) {alert("Inserire testo.");
    return false;}
    }
    </SCRIPT>

    <form name="Form1" method="post" action="cicco.asp" onsubmit="return invia()">
    [/HTML]

    a me funziona spero di esserti stato di aiuto

    ciao da danny:ciauz:


  • User Attivo

    Togli il controllo sul campo privacy... onClick="ctr(this)" e il && ctr() nell'onsubmit

    e togli la funzione:
    <SCRIPT>
    function ctr(quale)
    {
    if (quale.checked) else
    {quale.checked=false;
    }
    }
    </SCRIPT>

    Poi aggiungi alla funzione generale di controllo del form dopo il controllo a ciclo e la chiusura dell'if ma non della funzione ver():

    if(document.forms[0].privacy.checked != true) {
    alert("Accetta la privacy");
    document.forms[0].privacy.focus();
    return false;
    }

    Poi la checkbox la metti non chekkata, perchè l'utente deve compiere l'azione di accettare e non eventualmente quella di "non accettare"

    Io di solito identifico un campo con la forma form.nomeform.nomecampo passando alla funzione il nome del form, quindi la funzione sarebbe ver(form) e l'onsubmit ver(this) ... quindi se ti dà errore prova a mettere

    Registrazione.privacy.checked != true

    keiske


  • User

    Grazie mille, ora lo script funziona correttamente.
    L'ultimo problema che mi è rimasto è il controllo della mail. Mi sembra corretto però vedo che anche mettendo un nome a caso questo lo prende come un indirizzo email.
    Potreste aiutarmi anche in questo?


  • User Attivo

    A dire la verità l'avevo notato ma non ho detto nulla...

    EmailAddr = document.modulo.email.value;

    non è che devi modificare coi tuoi valori?

    document.Registrazione.email.value

    keiske


  • User

    in che senso devo modificare con i miei valori???
    cosa intendi?


  • User Attivo

    EmailAddr = document.modulo.email.value;

    modulo cos'è? non trovo niente nel tuo script che abbia come name o come id "modulo"

    keiske


  • User

    non riesco proprio a capire come mai non mi fa il controllo sulla mail.
    Potreste aiutarmi a capirlo?


  • User

    ok ho risolto tutto. per chi ne avesse bisogno in pratica andava spstituito a .modulo. .Registrazione. che sarebbe il nome del form.