Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    66

    (javascript) invio form dopo controllo

    ciao,
    sto costruendo un questionario on-line, le domande sono poste su più pagine e vorrei che il passaggio da una pagina all'altra avvenga dopo aver risposto ad alcuni dei campi obbligatori della form della pagina.

    vi posto il codice della prima pagina, se clicco sul bottone per passare alla domanda successiva senza aver risposto, riesco ad andarci, mentre vorrei che uscisse fuori un messaggio di errore in cui esplicito di rispondere alla domanda obbligatori.

    nel caso sottoelencato la domanda obligatoria è la checklist denominata manarance
    codice:
    <?php session_start ();
    ?>
    <?php 
    header('Cache-Control: Private'); 
    ?> 
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <script language="JavaScript" type="text/JavaScript">
     
    <!--
      
    function verifica(domanda1) 
     {
     var manarance=domanda1.manarance.value;
    
     if (manarance=="") {
     		alert("E' necessario inserire il nome.");
    		return false;
     }
     return true;
    }
      
    //-->
     
    </script>
    <title>questionario tesi Roberto Marroncelli</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body bgcolor="#FF9900" text="#336600" link="#FF0000" vlink="#000000">
    <div align="center"></div>
    <div align="center">
    <table width="100%" border="2" align="center" cellpadding="20" bordercolor="#009933" background="../immagini/arancia1.jpg" bgcolor="#FFFFFF">
        <tr> 
          <td width="19%" height="165" align="center" valign="top" bordercolor="#99FF00" bgcolor="#99CC33"> 
            <div align="center"><font size="+2" face="Georgia, Times New Roman, Times, serif">DOM. 
              1</font> </div></td>
          <td width="81%" align="left" valign="top" bordercolor="#99FF00" bgcolor="#FFFFFF">
    
    <font color="#000000"><font face="Georgia, Times New Roman, Times, serif">Lei 
              ha mangiato arance nell'ultimo anno?
    
              </font></font></p>
            <form onsubmit="return (verifica(this))" action="questionariofineanticipato/d2.php" method="post" name="domanda1" id="domanda1" >
              
    
     
                <label> 
                <input type="radio" name="manarance" value="1">
                si</label>
                
    
                <label> 
                <input type="radio" name="manarance" value="2">
                no</label>
                (specificare perch&egrave; non ha mangiato frutta?) 
                <input name="nomanarance" type="text" id="nomanarance">
                
    
                <input type="submit" name="Submit" value="&gt;&gt;">
              </p>
            </form>
            </tr>
      </table>
    </div>
    </body>
    </html>

  2. #2
    mi pare tutto giusto...
    l'alert compare giusto??
    www.gext.it

  3. #3
    è un po' ambiguo il tuo script,nel senso che tu vuoi semplicemente controllareche sia stato cliccato uno qualunque dei due controlli "radio"(se ho capito bene), mentre il testo dell'alert suggerirebbe che bisogna scrivere del testo nell'input "text", cosa che non c'entra col controllo di prima...

    Cmq il tuo problema è che domanda1.manarance non possiede una proprietà value, infatti se fai alert(manarance) subito dopo aver inizializzato la variabile manarance, vedrai che il suo valore è sempre e comunque "undefined". Ciò è dovuto al fatto che domanda1.manarance non è un elemento del form, ma una collezione di elementi(questo perchè hai dato lo stesso name a due controlli radio distinti), accessibile tramite indice, come se fosse un array. Infatti se provi a fare alert(domanda1.manarance[0].value) vedrai "1" nel messaggio, cioè il value del primo controllo.

    Ma non è value che interessa a te, perchè quello ci sarà sempre. Invece domanda1.manarance[0].checked controlla che il primo elemento radio sia stato cliccato, domanda1.manarance[1].checked controlla che il secondo elmento sia stato cliccato,eccetera.


  4. #4
    Originariamente inviato da COMANDANTE SPACE
    è un po' ambiguo il tuo script,nel senso che tu vuoi semplicemente controllareche sia stato cliccato uno qualunque dei due controlli "radio"(se ho capito bene), mentre il testo dell'alert suggerirebbe che bisogna scrivere del testo nell'input "text", cosa che non c'entra col controllo di prima...

    Cmq il tuo problema è che domanda1.manarance non possiede una proprietà value, infatti se fai alert(manarance) subito dopo aver inizializzato la variabile manarance, vedrai che il suo valore è sempre e comunque "undefined". Ciò è dovuto al fatto che domanda1.manarance non è un elemento del form, ma una collezione di elementi(questo perchè hai dato lo stesso name a due controlli radio distinti), accessibile tramite indice, come se fosse un array. Infatti se provi a fare alert(domanda1.manarance[0].value) vedrai "1" nel messaggio, cioè il value del primo controllo.

    Ma non è value che interessa a te, perchè quello ci sarà sempre. Invece domanda1.manarance[0].checked controlla che il primo elemento radio sia stato cliccato, domanda1.manarance[1].checked controlla che il secondo elmento sia stato cliccato,eccetera.


    hai ragione... non mi sono accorto che puntata a due RADIO e non ad un INPUT TEXT
    www.gext.it

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    66
    grazie a tutti e due, ho risolto cosi, e mi funziona alla perfezione:

    codice:
    <script type="text/javascript"> 
    <!--
    
    
    function verifica() { 
      var selezionato=false
      for(var i=0;i<document.domanda.manarance.length;i++)
        if(document.domanda.manarance[i].checked)selezionato=true
      if(selezionato){
        return true
      } 
      else{ 
        alert('selesionare SI o NO'); 
        return false 
      }
    } 
    
    
    //-->
    </script>

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.