• User Attivo

    controllo sui form con javascript

    ciao,è la prima volta che utilizzo javascript, quindi ne so molto poco 🙂

    ho fatto un form select "composizione" con vare opzioni. l ultima opzione è "Altro".
    maglie
    pantaloni
    cappelli
    Altro

    poi ho messo un altro form di testo per specificare "Altro". Volevo rendere quest ultimo form obbligatorio solo se nel select veniva selezionato Altro. ho scritto questo ma non funziona:

    if(composizione.selectedIndex=="Altro" && altro.value=="") {
    alert("Errore: compilare il campo ALTRO");
    altro.focus();
    return false;
    }

    credo sia una cosa facile per chi usa javascript. mi aiutate? 😉


  • User Attivo

    proprio a volo

     if (document.getElementById('composizione').value=='Altro')
    {
    alert('Compilare il campo altro')
    return false;
    }
    ```presuppone che la select sia fatta così:
    [html]
    <select id="composizione"/>
    <option>...</option>
    etc. etc.
    </select>[/html]

  • User Attivo

    ciao ho provato come dici ma lo stesso non effettua alcun controllo si form "altro". la select è questa

    <select name="composizione" id="composizione"><option></option><option>Maglie</option><option>Pantaloni</option><option>Cappelli</option><option>Altro</option></select>
    

    e altro è questo

    <input name="altro" type="text" id="altro" />
    

    questi sono i controlli

    
    if(composizione.selectedIndex=="") {
    alert("Errore: compilare il campo COMPOSIZIONE");
    composizione.focus();
    return false;
    }
    if (document.getElementById('composizione').value=='Altro') {
    alert("Errore: compilare il campo ALTRO");
    altro.focus();
    return false;
    }
    
    

    dove sbaglio?


  • User Attivo

    Perchè il codice che avevi messo faceva andare in errore.
    Comunque il discorso è questo:

    
    <script language="javascript">
    function check_select()
    {
    if (document.getElementById('composizione').value=='Altro') {
    alert("Errore: compilare il campo ALTRO");
    document.getElementById('altro').focus();
    return false;
    }
    }
    </script>
    ```[html]<select name="composizione" id="composizione"><option></option><option>Maglie</option><option>Pantaloni</option><option>Cappelli</option><option>Altro</option></select><br />
    <br />
    <input name="altro" type="text" id="altro" />
    
    <input type="button" value="invio" onclick="javascript:check_select()" />[/html]Poi dipende dalla tua pagina...
    Incolla l'html interessato alla cosa magari.

  • User Attivo

    ok incollo il tutto. dopo aver fatto il controllo su composizione, passa direttamente al controllo di "stato" che è un form messo dopo a "altro"
    [html]
    <?php
    $nome = $_GET['nome'];
    session_start();
    if(!isset($_SESSION['nome']) || $_SESSION['nome'] != $nome){
    print("<script>window.location='index.php'</script>");
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Caricamento Richiesta</title>
    <script language="JavaScript">
    function controllo(){
    with(document.modulo) {
    if(numero.value=="") {
    alert("Errore: compilare il campo NUMERO");
    numero.focus();
    return false;
    }
    if(cognome.value=="") {
    alert("Errore: compilare il campo COGNOME");
    cognome.focus();
    return false;
    }
    if(nome.value=="") {
    alert("Errore: compilare il campo NOME");
    nome.focus();
    return false;
    }
    if(composizione.selectedIndex=="") {
    alert("Errore: compilare il campo COMPOSIZIONE");
    composizione.focus();
    return false;
    }
    if (document.getElementById('composizione').value=='Altro') {
    alert("Errore: compilare il campo ALTRO");
    altro.focus();
    return false;
    }
    if(stato.value=="") {
    alert("Errore: compilare il campo STATO");
    stato.focus();
    return false;
    }
    }
    alert("Controllo effettuato con successo. Il modulo sarà inviato.");
    return true;
    }
    </script>
    </head>
    <body>
    <form name="modulo" id="modulo" onSubmit="return controllo();" action="elabora.php<? echo"?nome=$nome"?>" method="post">
    <input type="hidden" name="mail" value="[email protected]">
    <table bgcolor="#e4e4e4" width="700" align="center">
    <tr>
    <td colspan="2"><p class="Stile5">Caricamento Richiesta</p>
    <p class="Stile3"> * campi obbligatori </p> </td><td colspan="2"><p> </p>
    <p> </p>
    <p align="right">*numero:
    <input type="text" name="numero" id="numero"/>
    </p>
    </tr>
    <tr><td>*Cognome</td><td>*Nome</td></tr>
    <tr><td><input type="text" name="cognome" id="cognome" /></td><td><input type="text" name="nome" id="nome" /></td></tr>
    <tr><td>Composizione</td></tr>
    <tr><td><select name="composizione" id="composizione"><option></option><option>Maglie</option><option>Pantaloni</option><option>Cappelli</option><option>Altro</option></select></td><td></td><td><div align="right">Specificare Altro</div></td><td><input name="altro" type="text" id="altro" /></td></tr>
    <tr><td>*Stato</td></tr>
    <tr><td><input type="text" name="stato" id="stato"/></td></tr>

    <tr><td height="30"></td></tr>
    <tr>
    <td> <div align="center">
    <input type="reset" value="Cancella" height="8" />
    </div></td><td></td><td></td>
    <td>
    <div align="left">
    <input type="submit" value="Inoltra" height="8"/>
    </div></td></tr>
    <tr><td height="30"></td></tr>
    </table>
    </form>
    </body>
    </html>
    [/html]


  • User Attivo

    niente, ho provato afareanche una nuova pagina con solo il codice che mi hai dato ma lo stesso non va. nessun aiutino?:)


  • User Attivo

    Hai ragione...per fare veloce ho dimenticato io una cosa.

    Aggiorna la riga

    if (document.getElementById('composizione').value=='Altro') {
    alert("Errore: compilare il campo ALTRO");
    altro.focus();
    return false;
    }
    ```con questa:
    

    if (document.getElementById('composizione').value=='Altro' && document.getElementById('altro').value=='') {
    alert("Errore: compilare il campo ALTRO");
    altro.focus();
    return false;
    }


  • User Attivo

    mmm... lo stesso va al form dopo saltando il controllo su altro 😞


  • User Attivo

    perchè nelle option del campo select non hai assegnato un valore:

    <option>maglie</option> va scritto <option value="maglie">maglie</option>

    Firefox invece funziona perchè in assenza del campo value preleva il nome in mezzo alle option.
    Ad ogni modo...assegna il value e funzionerà.


  • User Attivo

    fatto, funziona tutto alla perfezione. grazie mille, senza il tuo aiuto sarei stata a scervellarmi un altra settimana (minimo) ciao e grazie ancora 😉