Newsgroup: it.comp.lang.javascript
Titolo: valorizare un combo con il valore di un campo hidden

Ciao, ho una tabella che mi viene popolata da una query su database, ha
quindi molte righe, su ognuna di esse ho un campo hidden ed una combo,
vorrei associare alla combo il valore del campo hidden, posso farlo
mediante un javascript ?? Qualche suggerimento ??
Grazie
Antonio D'Ottavio
www.etantonio.it

 mediante un javascript ?? Qualche suggerimento ??
cosa vuol dire "associare alla combo il valore"?
hai nella combo diversi valori e vuoi selezionare il value del campo
hidden?
vuoi aggiungere alla combo il value del campo hidden?
vuoi sostituire la option presente nella combo con il campo hidden?
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

in ogni riga c'è una combo che può assumere i valori A, B, C, D ,
nel campo Hidden c'è il valore da associare al combobox per la riga in
esame,
esso può essere A oppure B oppure C oppure D.
mi serve solo l'istruzione che effettua l'associazione, io avevo
provato con un qualcosa del genere
myform.mycombo.value = myform.myhidden.value
ma sembra non andar bene, suggerimenti ???
Antonio D'Ottavio
www.etantonio.it
Cristiano Larghi ha scritto:


 ma sembra non andar bene, suggerimenti ???
ti scrivo un veloce prototipo:
 - presupposto: ciò di cui stai parlando sono value delle option (e non il
text)
 - non sappiamo quando devi effettuare tale selezione, presuppongo onclick
di un tasto 
 - non sappiamo come identifichi l'hidden associato alla combo, dò per
scontato che sai come identificarlo e quindi ne conosci il value (sotto
denominato "tuovalore")
function seleziona() {
 var tuacombo=document.forms['myform'].elements['mycombo'];
 //cicli le option
 for(var x=0,objs=tuacombo.options;x<objs.length;x++)
  //verifichi che sia il value richiesto
  if(objs[x].value==tuovalore) {
   objs[x].selectedIndex=x;
   return;
  } //trovata => selezionata ed esco
} //seleziona
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

Per intenderci ti riporto a seguire le prime 3 righe della tabella
creata:
-------------------------------------------------------------
<FORM NAME='formVista' id='formVista' METHOD="POST" TARGET="AreaDati">
<input type='hidden' name="id_menu" id="id_menu" value="250401">
<table cellspacing=0 cellpadding=0 width=100%><tr><td><TABLE
id='tableMaker' BORDER=0 ALIGN=center cellspacing=2 cellpadding=2
class=tabella>
<TH class=titolo></TH>
<TH class=titolo>Destino associato</TH>
<TH class=titolo>Cod. Destino</TH>
<TH class=titolo>Servizio</TH>
<TH style="display:none;" value="HiddenServizio"></TH>
<TR class=dettaglio>
<TD valign=top ALIGN=left><INPUT TYPE='HIDDEN' NAME='keyHidden'
VALUE="ABW$M"></TD>
<TD class='dettaglio'  nowrap ALIGN=left><input type='CHECKBOX'
name='checkCodDest' id='checkCodDest' selected=true
onClick='alternaCheckValid(this);' value="0"></TD>
<TD class='dettaglio' nowrap  ALIGN=left>ABW</TD>
<TD class='dettaglio'  nowrap ALIGN=left><select
class='dettaglioEditabile'  name='Servizio' id ='Servizio' title='Tipo
Servizio' ><option value=''>  </option><option
value='B'>Entrambi</option><option value='F'>Fisso</option><option
value='M'>Mobile</option><option value='I'>Inma</option> </select>
</TD>
<TD style="display:none;"><input type='hidden'  name='HiddenServizio'
value="M"></TD></TR>
<TR class=dettaglio>
<TD valign=top ALIGN=left><INPUT TYPE='HIDDEN' NAME='keyHidden'
VALUE="ABW$null"></TD>
<TD class='dettaglio' style='background-color:transparent;' nowrap
ALIGN=left><input type='CHECKBOX' style='background-color:transparent;'
name='checkCodDest' id='checkCodDest' selected=true
onClick='alternaCheckValid(this);' value="0"></TD>
<TD class='dettaglio' nowrap style='background-color:transparent;'
ALIGN=left>ABW</TD>
<TD class='dettaglio' style='background-color:transparent;' nowrap
ALIGN=left><select style='background-color:transparent;'
class='dettaglioEditabile'  name='Servizio' id ='Servizio' title='Tipo
Servizio' ><option value=''>  </option><option
value='B'>Entrambi</option><option value='F'>Fisso</option><option
value='M'>Mobile</option><option value='I'>Inma</option> </select>
</TD>
<TD style="display:none;"><input type='hidden'  name='HiddenServizio'
value="C"></TD></TR>
-------------------------------------------------------------
in sostanza vorrei fare in modo che il valore M in HiddenServizio per
la riga 1 della tabella vada a valorizzare
il combo Servizio della stessa riga, vorrei farlo subito dopo la
creazione di ogni riga richiamando una funzione javascript,
solo che non sò come fare riferimento diretto al campo HiddenServizio
della i-esima riga.
Ciao, grazie
Antonio D'Ottavio
www.etantonio.it

 mediante un javascript ?? Qualche suggerimento ??
??? e perché scusa vuoi far ciò? Stai già popolando la select da database,
perché non selezioni l'item corretto server-side?
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 perché non selezioni l'item corretto server-side?
perchè chi ha fatto la servlet che genera la tabella comprensiva dei
combo non ha previsto e non vuole prevedere la valorizzazione diretta
del combo con un valore che arriva dal database pertanto mi occorre
farlo mediante javascript, in sostanza mi occorre sapere come
referenziare l'i-esimo hidden della tabella,
idee ???




ma per tutti o solo per la riga 1?
 - recuperi un riferimento alla tabella (di seguito tuatbl):
 
http://www.criosoftware.it/default14.aspx
 - recuperi la prima riga: tuatbl.rows[0]
 - recuperi la prima select con name="Servizio":
    var tuaselect=tuatbl.rows[0].getElementsByName("Servizio")[0]
 - recuperi la prima input con name="HiddenServizio" ... eh...purtroppo
getElementsByName temo funzioni solo sull'intero document. Se è la prima
input potresti fare
    var tuainput=tuatbl.rows[0].getElementsByTagName("input")[0];
ora hai i valori (tuaselect.value / tuainput.value) e i riferimenti
(tuaselect / tuainput) della select e della input della prima riga
-- 
"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.

In effetti a me serve un javascript da richiamare al termine di ogni
riga e che setti il combo presente nella stessa a partire dal valore
hidden presente anch'esso nella medesima riga,
ho provato con il seguente ma mi funziona soltanto per la prima riga :
    function setComboLocale()
    {
       var myHiddenValue = document.formVista.HiddenServizio.value ;
       var mycombo=document.formVista.Servizio;
       var objs= mycombo.options;
       for(var x=0 ; x<objs.length ; x++)
       {
              if(objs[x].value == myHiddenValue)
              {
	    mycombo.selectedIndex=x;
              }
        }
    }
Purtroppo ho bisogno di questa funzionalità in quanto per caricare la
tabella da DB ci mette parecchio tempo, cosi se aggiorno i combo alla
fine si rischia che son passati diversi secondi.
Come posso modificarlo per farlo funzionare su ogni riga ??
Ciao e grazie
Antonio D'Ottavio
www.etantonio.it
Cristiano Larghi ha scritto:


 ho provato con il seguente ma mi funziona soltanto per la prima riga :
[CUT]
io non ho chiaro il contesto. Dici che la servlet non è modificabile =>
allora immagino che anche la table non sia modificabile ... ergo non puoi
inserire un javascript dentro ogni riga ... ergo devi per forza farlo al
termine del caricamento della pagina:
window.onload=function() {
 //qua recuperi come detto un riferimento alla table, ti cicli le rows, per
ogni rows recuperi come detto i valori della combo e del campo hidden
}
Non vedo altre strade (se, come ho dedotto e scritto sopra, la tua servlet
che genera la table non è toccabile)


La servlet è strutturata in modo da restituirmi le singole righe della
tabella pertanto potrei inserire dopo ogni riga il richiamo al
javascript che mi setta il combo, ma come posso far riferimento ad essi
??
Ciao
Cristiano Larghi ha scritto:


 ??
non saprei, perché dovresti inserirlo tra una tr e l'altra ma va contro
qualsiasi standard ...
se infili il javascript tra una tr e l'altra dovresti per ogni riga:
 - recuperare id della table
 - recuperare l'ultima row (table.rows.length-1)
e da lì fare il giochetto.
Se richiami la tua function dovrai quindi passargli la row, in modo che da
lì possa recuperare select e campo hidden, come ti ho postato.
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.