Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    76

    controllo radio complicato.......

    fate conto che con una serie di cicli su cicli ed estrazioni dei dati da più tabelle da un db, arrivo ad ad avere (per esempio) questo docice:
    codice:
    1) domanda 1?
    
    <table cellpadding=0 cellspacing=1 border=0 class=f10><tr><td align=top><input type="radio" name="risposta[45]" value="172" CHECKED></td><td align=top>provina rispo 1
    </td><td align=top><input type="radio" name="risposta[45]" value="173" ></td><td align=top>provina rispo 2
    </td><td align=top><input type="radio" name="risposta[45]" value="180" ></td><td align=top>provina rispo 3
    </td><td align=top><input type="radio" name="risposta[45]" value="181" ></td><td align=top>provina rispo 4
    </td><tr><td colspan=4>
    </td></tr></tr></table>
    
    2) domanda 2?
    
    <table cellpadding=0 cellspacing=1 border=0 class=f10><tr><td align=top><input type="radio" name="risposta[46]" value="172" CHECKED></td><td align=top>provina rispo 1
    </td><td align=top><input type="radio" name="risposta[46]" value="173" ></td><td align=top>provina rispo 2
    </td><td align=top><input type="radio" name="risposta[46]" value="180" ></td><td align=top>provina rispo 3
    </td><td align=top><input type="radio" name="risposta[46]" value="181" ></td><td align=top>provina rispo 4
    </td><tr><td colspan=4>
    </td></tr></tr></table>
    
    3) domanda 3?
    
    <table cellpadding=0 cellspacing=1 border=0 class=f10><tr><td align=top><input type="radio" name="risposta[57]" value="172" CHECKED></td><td align=top>provina rispo 1
    </td><td align=top><input type="radio" name="risposta[57]" value="173" ></td><td align=top>provina rispo 2
    </td><td align=top><input type="radio" name="risposta[57]" value="180" ></td><td align=top>provina rispo 3
    </td><td align=top><input type="radio" name="risposta[57]" value="181" ></td><td align=top>provina rispo 4
    </td><tr><td colspan=4>
    </td></tr></tr></table>
    come faccio a controllare che, all'invio del form, ad ogni domanda sia stata data una risposta?

    sto impazzendo...

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    76
    non sa aiutarmi nessuno?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Cioe` stai dicendo che hai una serie di collezioni di radio, e vuoi controllare che in ciascuna collezione sia stata operata una scelta.
    Prova questo codice.
    codice:
    function checkallrad(ff,nomi) { 
      // ff e` l'oggetto form
      // nomi e` una stringa che contiene i nomi di tutti i campi da testare (separati da virgola o spazio)
      var ret = false;
      var campi = nomi.split(/[, ]+/);
      if(campi.lenght < 2) {
        alert("problemi con le collezioni");
        return false;
      }
      for(var i=0; i<campi.length; i++) {
        var el = ff.elements[campi[i]];
        if(el.length < 2) {
          alert("problemi con i radio "+campi[i]);
          return false;
        }
        ret = false;
        for(var j=0; j<el.length; j++) {
          if(el[j].checked) ret = true;
        }
        if(!ret) {
          alert("il campo "+campi[i]+" non e` stato cliccato");
          return false;
        }
      }
    }
    Naturalmente va chiamato con:
    <form ... onsubmit="return checkallrad(this, 'risposta[45], risposta[46], ...');">
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    76
    grazie della risposta. ora ho altre cose più urgenti di cui occuparmi, lunedì riprendo quel lavoro e vediamo. grazie ancora!

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    76
    grazie mille Mich_
    funziona alla perfezione

  6. #6
    sto provando ad usare anche io lo stesso controllo ma, non so per quale motivo, non funziona...
    è javascript vero ?
    posto le parti di codice che, spero, possano servire a capire dove sbaglio.

    codice:
    <html>
    
    <script language="JavaScript">
    function checkallrad(ff,nomi) { 
      // ff e` l'oggetto form
      // nomi e` una stringa che contiene i nomi ...
      var ret = false;
      var campi = nomi.split(/[, ]+/);
      if(campi.lenght < 2) {
        alert("problemi con le collezioni");
        return false;
      }
      for(var i=0; i<campi.length; i++) {
        var el = ff.elements[campi[i]];
        if(el.length < 2) {
          alert("problemi con i radio "+campi[i]);
          return false;
        }
        ret = false;
        for(var j=0; j<el.length; j++) {
          if(el[j].checked) ret = true;
        }
        if(!ret) {
          alert("il campo "+campi[i]+" non e` stato cliccato");
          return false;
        }
      }
    }
    </script>
    <body>
    e poi

    codice:
    <form name='thisForm' id='thisForm' method='post' action='Sond.asp?id=89&ACTION=SAVE' onsubmit='return checkallrad(this, 'campo833,campo834,campo835,campo836,campo837,campo838,campo839,campo840,campo842,campo844,campo845,campo846,campo847,campo848,campo854,campo856');'>
    mi sapreste dire dove sbaglio ?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Errore di apici/virgolette nella chiamata.

    Prova a scrivere cosi`:

    <form name='thisForm' id='thisForm' method='post' action='Sond.asp?id=89&ACTION=SAVE' onsubmit='return checkallrad(this, "campo833,campo834,campo835,campo836,....campo854, campo856");'>
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    grazie mille, davvero gentile !
    ora funziona ma ti "stresso" ancora un attimo ...
    non so se ho fatto un altro errore io o la cosa non era prevista ma io vorrei che lo script impedisse il submit del form se, appunto, trova dei radiobutton non valorizzati e, MAGARI, un focus sul primo radiobutton trovato senza valorizzazione.
    in ogni caso ti ringrazio ancora

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non riesco a seguirti.

    Lo script controlla che in tutti i gruppi di radio sia stata fatta una selezione, e impedisce il submit in caso contrario.


    Non viene fatto il controllo su quale campo ha il focus. Se il form e` stato inviato con il mouse, il focus sara` sul campo submit; altrimenti su un campo di tipo text.

    E poi come potrebbe esserci il focus su un radio e nessun radio di quella collezione selezionato? Non si puo` togliere la selezione ai radio, si puo` solo cliccare un altro campo della stessa collezione.
    (inoltre in XHTML Strict) non e` possibile avere dei radio non selezionati.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    il tuo script funziona perfettamente, era un mio controllo vbscript al termine della pagina a "ignorarlo" diciamo ...
    ora che l'ho capito ho fixato il tutto
    tnx !

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.