Newsgroup: it.comp.lang.javascript
Titolo: Form dinamici

Ciao a tutti,
è la prima volta che scrivo in questo gruppo anche perchè solo da poco
ho iniziato a utilizzare javascript e spero di riuscire a farmi
capire.
Ho sviluppato una form dinamica nel senso che sulla base della
selezione di una voce all'interno di un menu a cascata (select),
tramite una chiamata ad una funzione javascript vengono inseriti degli
specifici checkbox.  Ogni checkbox viene creato in javascript
specificando gli attributi nome e id, es:
newElement.innerHTML = " <input type='checkbox' name='nome_checkbox'
id='id_checkbox' checked='yes' />";
Nella pagina che viene aperta all'invio della form, al momento del
recupero del valore dei checkbox dinamici, non ottengo nessun valore.
In altri termini, quando scrivo:
$STATO_CHECKBOX =  $_POST['nome_checkbox'];
non ottengo mai nessun valore nella variabile $STATO_CHECKBOX anche se
il checkbox è selezionato.....
Mi sapreste spiegare perchè? Se utilizzo dei checkbox non dinamici, ma
scritti in puro html, quando questi vengono selezionati, restituiscono
il valore "on"....
Grazie in anticipo

 recupero del valore dei checkbox dinamici, non ottengo nessun valore.
Hai controlato se newElement.innerHTML si trova all'interno del
<form> ?
Dopo essere stato generato si intende.


Intanto grazie per la risposta.
In ogni caso, si ho controllato! gli elementi vengono inseriti
all'interno dei tag <form></form>


Non sono sicuro, ma io proverei due cose: checked='checked' invece di
cheked yes.
Oppure prova a costruire il dom non con l'inner html ma con
var new_element = document.createElement('input');
new_element.setAttribute('type','checkbox');;
....
var form = document.getElementById('id_form');
form.appendChild(new_element);


Grazie anche a te per la risposta.
Adesso verifico i tuoi consigli ma sull'attributo checked avevo già
fatto la prova che mi hai suggerito.
Provo subito a creare un elemento di tipo 'input'.
Ho notato che tu mi consigli di appendere l'elemento in questione
direttamente al form mentre attualmente non lo posso fare. Se
appendessi al form, l'elemento 'input' mi verrebbe inserito in coda a
tutto mentre io appendo ad un elemento 'div' così l'elemento 'input'
viene accodato nella posizione in cui si trova 'div' (situato  circa
nel mezzo del form).


Non ho ottenuto nessun miglioramento anche utilizzando elementi di
tipo input, non riesco a recuperarne il valore....
mi domando se questi elementi dinamici debbano essere richiamati in un
modo ad hoc e non semplicemente come si fa in modo standard come:
$STATO_ELEMENTO =  $_POST['valore dell'attributo name'];

 all'interno dei tag <form></form>
Noto che mostri il codice php, prima di essere assolutamente certi che
il problema si trovi su lato client ti consiglio di osservare gli
headers, io uso "Live HTTP headers" plugin di Firefox e posso
consigliarlo. Osserva bene cosa viene inviato al server, se dopo il
test hai la certezza che si tratti di un problema su lato client,
allora è meglio mostrare il codice javascript completo così possiamo
"spulciarlo" insieme.

 il checkbox è selezionato.....
con quale browser e versione? Provato con firefox, vero? La console 
javascript cosa dice?


Grazie per gli aiuti.
Dunque sto facendo le prove con firefox 3. La console javascript non
l'ho mai utilizzata e sto cercando di capirci qualcosa. Ho provato a
mettere dei breakpoint nel corpo delle funzioni javascript e
ricaricare le pagine php che richiedono tali funzioni ma non sembra
che l'esecuzione si blocchi. Farò altri test.
Ho provato a osservare l'header richiesto e quello risposto con il
plug in di firefox Live HTTP Headers, (anche esso non l'avevo mai
utilizzato), ma non so quali elementi possano essere determinanti.
Magiri se mi potessi dare delle delucidazioni te ne sarei grato.
Ecco la parte del corpo della funzione javascript per la comparsa/
scomparsa degli elementi dinamici tipo checkbox:
/* funzionePerAggiungereTogliereCheckbox() */
..
..
// aggiungo le colonne della tabella corrente alla form
..
..
..
var newdiv = document.createElement('div');
newdiv.setAttribute('id',nomi_colonne[j].attributes[0].value + tabelle
[i].attributes[0].value);
newdiv.innerHTML = " <input type='checkbox' name='"+nomi_colonne
[j].attributes[0].value+"' id='_"+nomi_colonne[j].attributes[0].value
+"' checked='yes' />" + nomi_colonne[j].attributes[0].value;
document.getElementById('Spec_Col').appendChild(newdiv);
..
..
..
// elimino le colonne della tabella corrente dalla form
var child = document.getElementById(nomi_colonne[k].attributes
[0].value + tabelle[i].attributes[0].value);
 if(child)
{
document.getElementById('Spec_Col').removeChild(child);
 }
---------------------------------------------------------------------------------------
Questa funzione è richiamata in una pagina html così strutturata:
<form name="aaaa" action="altrapagina.php" method="post">
<table>
<tr><td>
<select name="tab_sel"onchange="return
funzionePerAggiungereTogliereCheckbox(this)">
..
..
..
 <div id="Spec_Col"></div>
..
..
..
------------------------------------------------------
In altrapagina.php (vedi action del post) recupero i valori con
$STATO_CHECKBOX =  $_POST['nome_checkbox'];
Grazie ancora


Ho scoperto dove risiede il problema:
in realtà per recuperare i valori facevo:
$VAR = $colonna['nome'];
$STATO_CHECKBOX =  $_POST[$VAR];
passando la variabile $VAR non viene risolta mentre se scrivo una
stringa di testo tipo 'nome_checkbox' come argomento della POST, non
ho problemi.

 in realt� per recuperare i valori facevo:


 $STATO_CHECKBOX =  $_POST[$VAR];
lo sospettavo che non era su lato client