Newsgroup: it.comp.lang.javascript
Titolo: gestire array tramite FORM

 document.form.dati.value[1]
ma non ha
funzionato!!
Chi mi sa aiutare?
--------------------------------
Inviato via 
http://usenet.iol.it

 document.form.dati.value[4] = document.form.anno.value +
document.form.mese.value + document.form.giorno.value


...

<script>
var dati=new Array()
dati["nome"]="nome"
dati["cognome"]="cognome"
dati["lingua"]="lingua"
var j="<form NAME='form1'>"
+"<input type='text' name='"+dati["nome"]+"' value='"+dati["nome"]+"'>"
+"<input type='text' name='"+dati["cognome"]+"'
value='"+dati["cognome"]+"'>"
+"<input type='text' name='"+dati["lingua"]+"' value='"+dati["lingua"]+"'>"
+"</form>"
document.writeln(j)
var cc=eval('document.forms[0].'+dati["nome"]+'.value')
var cc=document.forms["form1"].elements[0].value
eval('document.forms[0].'+dati["nome"]+'.value="nuovo"')
document.forms[0].elements[0].value="nuovo"
</script>
Se ho capito bene.
--
Ciao
  [[web].
www.gfcarlotti.it
]
  [[mail].
fra...@gfcarlotti.it
]

   [[mail].
fra...@gfcarlotti.it
]
Grazzissime per la risposta !!!
sono sicuro che puoi aiutarmi!
Sotto (vedi ##) ho inserito parti semplificate del mio software per capire
meglio (ambiente PHP)
Il tuo script l'ho provato in una pagina vuota e funziona, pero' ho preso la
riga che mi serviva (var cc=eval('document.forms[0].'+dati["nome"]+'.value')
) e l'ho inserita nel mio script per verificare se intercettava la variabile
dati:
function tasto_view(dove, cosa) {
eval('document.'+dove+'.'+dati["data"]+'.value='document.'+dove+'.anno.value
'+'document.'+dove+'.mese.value'+'document.'+dove+'.giorno.value');
  eval("document."+dove+".accetta.value='"+cosa+"'");
  eval("document."+dove+".submit()");
}
Ritorna un errore: dati non e' definito
(##)
la form e' dichiarata cosi:
________________
print("<form method='post' name='frm_$valori[tabella]'
action='$pagina.php'>");
gli elementi della form li popolo cosi':
________________
print("input type='hidden' name='accetta' value=''");
$query = "SELECT * FROM $tabella";
$risultato = mysql_query($query);
$tot_colonne = mysql_num_fields($risultato);
$riga = mysql_fetch_row($risultato);
for ($num_colonna = 0; $num_colonna < $tot_colonne; $num_colonna++)
{ 
$nome_campo = mysql_field_name($risultato, $num_colonna); 
print("input type='text' name='dati[$nome_campo]'"); 
} 
in modo da prendere il nome direttamente dal nome del campo della tabella
in caso sia presente nella tabella un campo data nel ciclo viene iserito (che sono i dati che vorrei aggregare prima che viene eseguita la pagina e analizzare i dati della form):
________________
print("input type='hidden' name='dati[data]' value=''");
print("input type='text' name='giorno'"); 
print("input type='text' name='mese'"); 
print("input type='text' name='anno'"); 
ed il submit e': 
________________ 
print("<td><a href='java script:tasto_view(\"frm_$valori[tabella]\",\"si\");'>OK</a></td>");
print("<td><a href='java script:tasto_view(\"frm_$valori[tabella]\",\"no\");'>ANNULLA</a></td>"); 
in modo da evitare rozzi bottoni o l'obbligo di usare immagini, e la routine java script: 
function tasto_view(dove, cosa) { 
eval("document."+dove+".accetta.value='"+cosa+"'"); 
eval("document."+dove+".submit()"); 
} 
cosi' posso chiamare la stessa routine da varie form. 
####### 
Nella pagina che riceve i dati della form tutti i dati risultano presenti nell' array "dati" e ogni valore corrisponde a dati[$nome_campo]. 
In questo modo sfruttando le proprieta' "type" e "flags" di MySQL 
posso verificare se i dati corrispondono alla caratteristiche stabilite in fase di progettazione del database e quindi validarli. 
TUTTO FUNZIONA PERFETTAMENTE MA NON RIESCO A PASSARE LA DATA (aaaa-mm-gg) che prelevo (quando e' presente) in forma separata. 
E' possibile che HTML passi un Array come campo di una form e javascript non e' in grado di intercettare i singoli elementi di questo array?

Ritorna un errore: dati non e' definito
L' Array dati[...], non e' dichiarato nello script della pagina HTML.
In questo caso devi passare dati[data] a javascript;
Io farei cosi':
print("input type='hidden' name='dati[data]' value=''");
print("input type='text' name='giorno'");
print("input type='text' name='mese'");
print("input type='text' name='anno'");
print("</form>")
print("script language='javascript'>var aaaammgg=dati[data]<\/script>")
function tasto_view(dove, cosa) {
  eval("document."+dove+"."+aaaammgg+".value= ...");
  eval("document."+dove+".accetta.value='"+cosa+"'");
  eval("document."+dove+".submit()");
}
Oppure senza passare nulla, inserisci la riga:
print("input type='hidden' name='dati[data]' value=''");
come ultimo elemento del form.
poi lo invii cosi':
function tasto_view(dove, cosa) {
eval("document."+dove+".elements[document."+dove+".elements.lenght-1].value=
...")
  eval("document."+dove+".accetta.value='"+cosa+"'");
  eval("document."+dove+".submit()");
}
Oppure come primo elemento del form.
poi lo invii cosi':
function tasto_view(dove, cosa) {
  eval("document."+dove+".elements[0].value= ...")
  eval("document."+dove+".accetta.value='"+cosa+"'");
  eval("document."+dove+".submit()");
}
L' importante e' capire il problema, qualche soluzione si trova sempre,
ma non so se ho capito il problema


 }
Ed e' questa la SOLUZIONE !!!
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="forma" method="post" action="valori.asp">
  <input type="hidden" name="dati[nome]" value="xx">
  <input type="text" name="nome">
  <input type="text" name="cognome">
  <input type="button" name="Submit" value="funzione()"
onClick="funzione();">
</form>
<script language="JavaScript">
function funzione()
document.forma.elements[0].value = document.forma.nome.value +
document.forma.cognome.value
alert(document.forma.elements[0].value);
}
</script>
</body>
</html>
provato questo nel week end......COSI' FUNZIONA
Doppio plauso: LA PERSEVERANZA PORTA SEMPRE BUONI FRUTTI.
ANCORA GRAZIE  ;-))