Newsgroup: it.comp.lang.javascript
Titolo: Controllare checkbox e radio buttons da un dropdown menu'

Ciao a tutti!
Ho urgente bisogno di aiuto. Devo costruire un prototipo che a seconda
della voce scelta in un dropdown menu mostri alcuni dei checkbox e
radio buttons presenti in una pagina selezionati e gli altri
deselezionati.
Qualcuno di voi ha un prototipo di questo tipo o saprebbe come
scrivere il codice???
GRAZIEEEEEE!!!!!!

 deselezionati.
se hai un minimo di dimestichezza col DOM e javascript non è difficile:
 - onchange della select scateni una function (es. Vis(this))
 - la Vis(sender) visualizza o nasconde settando il display corretto.
Se ne è parlato pochi giorni fa.
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.


wrote:

Ti ringrazio tanto per la risposta, purtroppo non ho dimestichezza con
la programmazione in generale, ehm....
Ora come ora sono partita da codice che ho trovato in rete per
selezionare/deselezionare tutto e ho applicato la selezione di tutti i
checkbox a un dropdown menu.
Immagino che la funzione decheck non mi serva più e potrei
eliminarla...?
Come vedi qui sotto ho cercato di creare dei nuovi checkbox
cambiandogli di nome. In questo modo quelli non sono selezionati.
Il mio problema ora é: come faccio a fare in modo che l'utente
selezioni automaticamente i primi 3 chekbox andando su page1 del
dropdown menu e selezioni gli ultimi 3 checkbox andando su page2 ?
Aiutoooooo!
<SCRIPT LANGUAGE="JavaScript">
function check(field)
{
for (i = 0; i < field.length; i++)
{
field[i].checked = true;
}
}
function decheck(field)
{
for (i = 0; i < field.length; i++)
{
field[i].checked = false;
}
}
</script>
<form name=theform
action=""
method=post>
<input type=checkbox
name=list value="1">uno<br>
<input type=checkbox
name=list value="2">due<br>
<input type=checkbox
name=list value="3">tre<br>
<input type=checkbox
name=mylist value="1">uno<br>
<input type=checkbox
name=mylist value="2">due<br>
<input type=checkbox
name=mylist value="3">tre<br>
<br>
<SELECT name="guidelinks" onChange="check(this.form.mylist)">
<OPTION SELECTED value="jdrop2.htm">--Choose--
<option value="Page 1">Page 1
<option>Page 2
</SELECT>
</FORM>

 name=list value="2">due<br>
Controdomanda: conosci almeno l'html? sai quanto sopra cosa significa? Sai,
server-side, leggere i valori passati se i tag input hanno tutti lo stesso
name?
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

                                                                             P.F.
Grazie per le tue risposte. Si, conosco l'html e ho basi di javascript
e ho capito quello che ho fatto. Il problema é che per questo lavoro
che devo fare mi hanno richiesto appunto solo html e basi di
javascript. Però un tipo ora mi ha chiesto di creargli un prototipo
per esporre una marea di checkbox e radiobuttons che secondo lui
dovrebbero essere selezionati per "set" a partire da voci di un
dropdown menu. Praticamente: vado su page1 nel dropdown menu ed
automaticamente si ceccano tutta una serie di checkbox e radiobuttons,
vado su page 2 e se ne ceccano altri etc.
Questo non andrà online ma é appunto un prototipo, i developer
penseranno poi alla reale soluzione.
Io lavoro con gente che si occupa di vendite, a cui non interessa
capire la differenza tra dover programmare o no.
Quindi sto cercando un modo per accontentarli...ho cercato per ore e
fatto prove con diversi script cercando di capire se potevo adattare
qualcosa di semplice alla loro idea. Non avendo trovato ancora niente
mi ero rivolta al forum...
ringrazio tutti per qualsiasi aiuto possiate darmi...

 penseranno poi alla reale soluzione.
non riesco a capire però bene cosa significa "prototipo": se è solo html e
server-side non vi è nulla, escluso un qualcosa tipo la creazione di un
questionario o simile ... ossia: se la pagina è fissa è un prototipo solo
nel senso che è generico; e in tal caso sai come fare (poi duplicherai
praticamente il codice) ...
Se è solo un prototipo allora col name uguale per ogni tipologia potrebbe
essere facile, del tipo:
 - chiamiamo p.e. i value delle options "Opt1","Opt2", ... "Optx"
 - chiamiamo tutte le checkbox dello stesso gruppo con name uguale che
finisca per il valore, es. per la voce "Opt1" creiamo le checkbox con
name="Chk1Opt1","Chk2Opt1, ... "ChkxOpt1"
Ora, nella tua Vis(sender), basterà un qualcosa del tipo
 - for(var i=0,objs=document.getElementsByName("Chk"+sender.value) ;
i<objs.length;i++)
    objs[i].checked=true;
Con quanto sopra dovresti selezionare le checkbox corrette (per radiobutton
devi spiegare meglio, perché solo un radiobutton può essere selezionato,
non puoi selezionarli tutti)
Ti servirà anche la function che hai già per togliere il check a tutte
(altrimenti se scegli prima pag1 e poi pag2 resteranno selezionate
entrambe)

mmmmhhhh, ho provato: risultato nullo...sicuramente non ho capito come
fare.
Io faccio semplicemente il design di una pagina e poi mostro a queste
persone come funziona facendo una simulazione attraverso html e
javascript.
Loro vorrebbero che a riuscissi a mostrare differenti opzioni. I radio
button dovrebbero essere collegati ai checkbox.
Ovvero sotto un checkbox andrebbero una serie di radio buttons
collegati ad esso.
L'utente dovrebbe scegliere di poter checkare e dececcare tutto
manualmente ma anche scegliere attraverso il dropdown menu un "set"
predefinito.
Per cui con page1 il risultato potrebbe essere 3 checkbox chekati e il
primo radio button, con page2 il risultato potrebbe essere i primi 2
checkbox chekati e il secondo radio buttons del second checkbox etc.
Grazie ancora....
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
function check(field)
{
for (i = 0; i < field.length; i++)
{
field[i].checked = true;
}
}
function decheck(field)
{
for (i = 0; i < field.length; i++)
{
field[i].checked = false;
}
}
function choice(field)
{
for(var i=0,objs=document.getElementsByName("Chk"+sender.value) ;
i<objs.length;i++)
    objs[i].checked=true;
	}
</script>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<form name=theform
action=""
method=post>
<input type=checkbox
name="chk1opt1" value="1">uno<br>
<input type=radio
name="chk2opt1" value="1">dieci<br>
<input type=checkbox
name="chk3opt1" value="2">due<br>
<input type=checkbox
name="chk1opt2" value="3">tre<br>
<input type=checkbox
name="chk2opt2" value="1">uno<br>
<input type=checkbox
name="chk3opt2" value="2">due<br>
<input type=radio
name="chk4opt2" value="1">dieci<br>
<input type=radio
name="chk5opt2" value="1">undici<br>
<input type=checkbox
name="chk6opt2" value="3">tre<br>
<br>
<SELECT name="guidelinks" onChange="check(this.form)">
<OPTION SELECTED value="jdrop2.htm">--Choose--
<option value="opt1">Page 1
<option value="opt2">Page 2
</SELECT>
</FORM>
</body>
</html>

 <SELECT name="guidelinks" onChange="check(this.form)">
qua stai passando alla function "check" la form (this.form) che contiene la
nostra select ... è questo che vuoi? non volevi passare l'oggetto (this) ?
Inoltre la nostra function prendeva il name "opt1" della select, ma qua ha
name="guidelinks" ...
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 esempio il parametro della function doveva chiamarsi "sender", non "field"
ok allora provo a chiamarlo sender


 devono essere decekkati automaticamente.
scusami, ma prima mi avevi detto esattamente il contrario, ossia che
possono fare più selezioni e che quindi non andavano "decheckati" ...
Devi assolutamente capire esattamente cosa vuoi ottenere (per questa
domanda hai già una function che deseleziona tutti i checkbox ... )
[CUT]
Hai fatto le modifiche indicate? (ma non tiene comunque conto di questi
radiobutton di cui non capisco a cosa servono)
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.


wrote:

Se per te va bene, ti mando il file perchè vedo che non sono riuscit a
spiegarmi bene, ok?

 spiegarmi bene, ok?
no, questo è un newsgroup, deve essere visibile a tutti (e magari qualcun
altro può risponderti).
Posta il codice (il più ristretto possibile) che simuli ciò che vuoi
ottenere (soprattutto le relazioni tra la select, i radio e le checkbox), e
scrivi *esattamente* cosa deve avvenire selezionando un valore della
select, cliccando su un radio,  cliccando su una checkbox, quando e come
occorre azzerare le selezioni etc)
Una volta capito cosa si vuole ottenere si potrà provare a scrivere del
codice javascript.



wrote:

Ok,
io vorrei solamente che quando clicko su Full nel dropdown menu si
cecki il checkbox Timeout e il radio button without.
Questo è il codice...sbagliato!
Non so come scrivere il percorso
onChange="check(this.form.mylist).value quando gli input devono essere
fuori dal form principale.
Potresti darmi un codice che funzioni? Ti prego, se oggi non ci riesco
mi licenziano...loro pensano che debba solo fare un dropdown menu'...
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
function check(field)
{
for (i = 0; i < field.length; i++)
{
field[i].checked = true;
}
}
function decheck(field)
{
for (i = 0; i < field.length; i++)
{
field[i].checked = false;
}
}
</script>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<title>Entry Mask</title>
</head>
<body tracingsrc="Entry_Mask.gif" tracingopacity="40">
<table width="1024" border="0" align="left" cellpadding="0"
cellspacing="0">
  <tr>
    <td><img src="top.gif"></td>
  </tr>
  <tr>
    <td><table width="1024" border="0" cellpadding="0"
cellspacing="0">
      <tr>
        <td width="15" height="462" valign="top"><img
src="left_border.gif" width="15" height="462"></td>
        <td width="934" height="462" valign="top"><table width="934"
border="0" cellpadding="0" cellspacing="0">
          <tr>
            <td
width="298">
<form name=theform
action=""
method=post>
<SELECT name="guidelinks" class="dropdown"
onChange="check(this.form.mylist).value">
<OPTION SELECTED value="jdrop2.htm">- Please choose report template -
<option value="Full">Full
<option value="Standard">Standard
<option value="Brief">Brief
<option value="Custom Template 1">Custom Template 1
<option value="Custom Template 2">Custom Template 2
</SELECT><br>
</FORM>
</td>
            <td width="665" valign="top"><img
src="introductive_text.gif"></td>
          </tr>
          <tr>
            <td colspan="2"><input type=checkbox
name=mylist value="1">
              <span class="textbold">Timeout</span><br>
              <input type=radio
name=mylist value="2">
              <span class="textmedium">With</span>
              <input type=radio
name=mylist value="3">
              <span class="textmedium">Without</span> </td>
            </tr>
        </table>
</td>
        <td width="75" height valign="top""462"><img
src="right_border.gif" width="75" height="462"></td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td width="1024" height="58"><img src="buttons.gif" width="1024"
height="58"></td>
  </tr>
</table>
</body>
</html>

 cecki il checkbox Timeout e il radio button without.
Non hai detto cosa succede se seleziono le altre voci, deduco si debba
deselezionare tutto.
Quindi:
 <select onchange="check(this.form.mylist)"
e (fatte le modifiche al name della checkbox, spostata la dichiarazione
della form e cambiato la decheck) la check diventa
function check(field) {
 //deselezioniamo tutto
 decheck(field);
 //Se non ho scelto la option con value="Full" esco
 if(field[0].form.elements['guidelinks'].value!="Full")
  return;
 //seleziono la checkbox con name="mylistCHK"
 field[0].form.elements['mylistCHK'].checked="checked";
 //ciclo i radio (array field) e seleziono quello con value="3"
 for(var i=0;i<field.length;i++)
  if(field[i].value=="3") {
   field[i].checked="checked";
   break;
  }
}
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.