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

    (JavaScript) controlla tutte le check e dai alert su chek mancante

    ciao,
    sto realizzando un questionario on-line, ho una domanda con diverse checklist, vorrei che si possa passare alla domanda successiva solo dopo aver risposto a tutte le domande e nel caso mancasse la check per uno dei casi, vorrei che comparisse solo il messaggio di alert per il caso particolare.

    so già dov'è l'errore nel mio codice, ma mi sono bloccato e non riesco a capire come poter comporre la funzione, ve lo posto:
    codice:
    <script type="text/javascript"> 
    <!--
    
    
    function verifica() { 
      var selezionato=false
      for(var i=0;i<document.domanda.frecolspi.length;i++)
      for(var i=0;i<document.domanda.frepraspi.length;i++)
      for(var i=0;i<document.domanda.frecenspi.length;i++)
      for(var i=0;i<document.domanda.fremerspi.length;i++)
      for(var i=0;i<document.domanda.fresofspi.length;i++)
    
        if(document.domanda.frecolspi[i].checked)selezionato=true
      if(selezionato){
        return true
      } 
      else{ 
        alert('selezionare una frequenza per colazione'); 
        return false 
      }
      if(document.domanda.frepraspi[i].checked)selezionato=true
      if(selezionato){
        return true
      } 
      else{ 
        alert('selezionare una frequenza per pranzo'); 
        return false 
      }
      if(document.domanda.frecenspi[i].checked)selezionato=true
      if(selezionato){
        return true
      } 
      else{ 
        alert('selezionare una frequenza per cena'); 
        return false 
      }
      if(document.domanda.fremerspi[i].checked)selezionato=true
      if(selezionato){
        return true
      } 
      else{ 
        alert('selezionare una frequenza per merenda'); 
        return false 
      }
      if(document.domanda.fresofspi[i].checked)selezionato=true
      if(selezionato){
        return true
      } 
      else{ 
        alert('selezionare una frequenza per senza ore fisse'); 
        return false 
      }
    } 
    
    
    //-->
    </script>
    so che l'errore è nel fatto che do subito il comando di true quando viene vistato già il primo check, ma vorrei che venissero prima controllati tutti i check e poi mi rimandasse true o false e in questo caso vorrei che venisse fuori un messaggio di alert per il check non vistato

  2. #2
    anzichè mettere return true e return false potresti creare un array in cui inserire 1 se la risposta è stata data e 0 se non è stata data e alla fine fare il controllo di tutti i valori e se sono tutti a 1 restituisci true

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    66
    scusa la mia ingnoranza ma non saprei da dove iniziare

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    66
    ho risolto così, anche se non sono riuscito a dare un alert personalizzato al form mancante.

    codice:
    <script type="text/javascript"> 
    <!--
    
    
    function verifica() { 
      var controllo=false;
       for (i=0;i<document.domanda.frecolspi.length;i++)
         for (i=0;i<document.domanda.frepraspi.length;i++)
    	   for (i=0;i<document.domanda.frecenspi.length;i++)
    	   	  for (i=0;i<document.domanda.fremerspi.length;i++)
    		    for (i=0;i<document.domanda.fresofspi.length;i++)
          {
          if(document.domanda.frecolspi[i].checked&&document.domanda.frepraspi[i].checked&&document.domanda.frecenspi[i].checked&&document.domanda.fremerspi[i].checked&&document.domanda.fresofspi[i].checked)controllo=true
          }
       if (controllo)
          {
         return true
      } 
      else{ 
        alert('seleziona almeno una scelta per ogni momento di consumo'); 
        return false 
      }
    } 
    
    //-->
    </script>
    se qualcuno ha un idea mi faccia sapere

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    66
    mi correggo,
    non ho risolto un bel niente.
    adesso non mi da l'alert solo se seleziono la identica scelta da ogni gruppo di radiobutton
    mi spiego megli con un esempio:

    indicare per ogni mezzo di trasporto se l'ha usato nell'ultimo anno? (domanda stupida, ma rende l'idea)

    -moto (SI / NO / NON RICORDO)
    -auto (SI / NO / NON RICORDO)
    -autobus (SI / NO / NON RICORDO)
    -traghetto (SI /NO / NON RICORDO)

    con il codice che ho postato prima mi da true solo se sono tutti SI o tutti NO o tutti NON RICORDO, a me invece interesserebbe che sia vistata solo uno per ogni mezzo di trasporto

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Esempio:
    codice:
    <HTML>
    <HEAD>
    <script>
    function verifica() {
    ritorno=true;
    
    c = document.myfrm.auto;
    r = false;
    for (var i=0;i<c.length;i++) {r=r||c[i].checked};
    ritorno = ritorno&&r;
    
    c = document.myfrm.moto;
    r = false;
    for (var i=0;i<c.length;i++) {r=r||c[i].checked};
    ritorno = ritorno&&r;
    
    return ritorno;
    }
    </script>
    </HEAD>
    
    <BODY>
    <form name="myfrm">
    Auto:
    <input type="radio" name="auto" value="si">si
    <input type="radio" name="auto" value="no">no
    <input type="radio" name="auto" value="nr">n.r.
    
    
    Moto:
    <input type="radio" name="moto" value="si">si
    <input type="radio" name="moto" value="no">no
    <input type="radio" name="moto" value="nr">n.r.
    
    
    <input type="button" value="?" onclick="alert(verifica())">
    </form>
    
    </BODY>
    </HTML>
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    66
    grazie per l'aiuto, ma se volessi anche far comparire un alert che avverte che bisogna compilare tutti i dati altrimenti non il form non viene inviato, come posso fare?

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    66
    fatto....almeno credo ho aggiunto:
    codice:
    if(ritorno)
    {
         return true
      } 
      else{ 
        alert('seleziona almeno una scelta per ogni momento di consumo'); 
        return false 
      }
    }
    così il codice completo riprendendo il post iniziale è venuto:
    codice:
    <script type="text/javascript"> 
    <!--
    function verifica() {
    ritorno=true;
    
    c = document.domanda.frecolspi;
    r = false;
    for (var i=0;i<c.length;i++) {r=r||c[i].checked};
    ritorno = ritorno&&r;
    
    c = document.domanda.frepraspi;
    r = false;
    for (var i=0;i<c.length;i++) {r=r||c[i].checked};
    ritorno = ritorno&&r;
    
    c = document.domanda.frecenspi;
    r = false;
    for (var i=0;i<c.length;i++) {r=r||c[i].checked};
    ritorno = ritorno&&r;
    
    c = document.domanda.fremerspi;
    r = false;
    for (var i=0;i<c.length;i++) {r=r||c[i].checked};
    ritorno = ritorno&&r;
    
    c = document.domanda.fresofspi;
    r = false;
    for (var i=0;i<c.length;i++) {r=r||c[i].checked};
    ritorno = ritorno&&r;
    
    if(ritorno)
    {
         return true
      } 
      else{ 
        alert('seleziona almeno una scelta per ogni momento di consumo'); 
        return false 
      }
    } 
    
    
    //-->
    </script>
    grazie br1

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.