Newsgroup: it.comp.lang.javascript
Titolo: Checkbox fuori FORM

Ho questa pagina (prova.php):
...
<INPUT type="checkbox" name"pippo02">
<INPUT type="checkbox" name"pippo07">
<INPUT type="checkbox" name"pippo26">
<INPUT type="checkbox" name"pippo14">
<INPUT type="checkbox" name"pippo50">
<INPUT type="checkbox" name"pippo34">
...
<FORM action="prova.php" method="post">
  <INPUT type="submit" value="Invia">
</FORM>
...
Non posso mettere i checkbox dentro al FORM.
Come faccio a inviare i valori di tutti i checkbox quando viene
premuto Invia?
Preciso che il numero di checkbox č variabile (sono generati con PHP)
ed i nomi che vengono assegnati sono tutti del tipo pippoXX, dove XX č
un numero.
Spero qualcuno mi possa aiutare..
Mhaxx

 Spero qualcuno mi possa aiutare..
Spiega prima la situazione.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

in un modulo.
Sicuro? Non posso proprio?
Il fatto è che i checkbox sono fra le prime righe del codice HTML,
mentre il FORM che contiene il pulsante per l'invio è fra le ultime
righe.. distano 300 righe, eh lo so, sono tante.. ma, se possibile non
vorrei spostare pezzi del FORM in alto, perchè così perdo la
visibilità di dove inizia e dove finisce... cmq, se non ho
alternative, farò così!.. :-)
Faccio altre 2 domande:
1) posso inviare con un FORM non un valore, ma un array?
2) è possibile eseguire un pezzo di codice PHP a seguito di un evento?
voglio dire: quando un utente aggiunge la spunta ad un checkbox,
dovrei aggiungere questo valore in una variabile di sessione: posso
farlo? credo che la risposta sia no, cioè non posso farlo come fosse
un JS, ma devo per es. ricaricare la pagina e far eseguire un codice
PHP.. giusto?
Mhaxx

 PHP.. giusto?
Piu' o meno esatto. Cmq considera che solitamente queste operazioni si
fanno al submit.
Cioe'.. l'utente imposta *tutti* i dati, e poi questi vanno inviati al
server, che li elabora e li gestisce come meglio crede. Qua puoi impostare
una variabile di sessione.


> PHP.. giusto?
C'avevo pensato anche io se suggerirglielo o meno, ma poi ho desistito. Una
cosa del genere associata ad un evento utente come lo "spunta di una
checkbox" (un utente che c'ha un tick nervoso sul dito col quale preme il
tasto del mouse) ti esegue virtualmente enne richieste, e *soprattutto*
esse non sono sincronizzate (a differenza, ad esempio, dell'XmlHttpRequest)
con il resto dell'applicativo.
Puo' andar bene per fare un trace dell'utente o per eseguire un' operazione
al caricamento della pagina (o cmq ad eventi controllati indipendenti
dall'utente).
Anche usando l'onload e/o l'onerror, si ha una gestione maggiore sul
risultato della funzione php, ma mai sufficiente.


checkbox e poi invia quello, ma son tutte toppe che non hanno senso
Però forse fa al mio caso.. Il mio bisogno ora è questo: raccogliere i
valori dei checkbox (che stanno al di fuori del form) per es. in un
array JS, e poi usare questo array come campo hidden nell'invio del
form. Si può?
Mi spiego con uno pseudocodice, spero si possa tradurre in JS:
<INPUT type="checkbox" name"carrello" value="<?= $codice ?>"
onchange="qui c'è un JS che mette in un apposito array chiamato
valori_checkbox il value">
Poi ci sarà più sotto il form:
<FORM action="pippo.php" method="post">
  <INPUT type="hidden" value="qua va messo l'array valori_checkbox">
  <INPUT type="submit" value="Aggiungi al carrello">
</FORM>
O forse andrà un roba tipo:
<FORM action="pippo.php" method="post">
  <INPUT type="hidden" name="mio" value="">
  <INPUT type="submit" value="Aggiungi al carrello"
onsubmit="valorizza value di mio con l'array valori_checkbox">
</FORM>
Che mi dite? E' possibile?
Altra questione: l'esecuzione di uno script PHP a seguito di un
evento. Esiste l'artificio dell'immagine nascosta: ok, ma se voglio,
oltre che eseguire del codice PHP, anche per es. modificare l'HTML, è
ancora possibile questo metodo? Ad es. voglio che quando un utente
spunta un checkbox, quel checkbox scompaia e al suo posto venga
scritto "ok": è possibile farlo senza dover ricaricare la pagina?
Mhaxx

L'ho provato e pare funzionare, cioč toglie e mette i checkbox
spuntati o de-spuntati.. solo alcune osservazioni:
- al form ho messo nome name="libri_da_aggiungere_al_carrello", perchč
lo script PHP che viene lanciato quando si preme sul pulsante deve
sapere se č stato settato l'INPUT hidden, e lo fa guardando se
isset($_POST["libri_da_aggiungere_al_carrello"]); domanda: posso usare
id al posto di name? come? altrimenti, giusto per non tenere sia id
che name per questo form, posso togliere id e fare riferimento a tale
INPUT col suo name dentro al JS che mi ha scritto? eventualmente,
come?
- oltre a quel form, vorrei avere un altro form che invia anch'esso
quei dati che vengono preparati col JS: ho provato a metterci dentro:
<INPUT type="hidden" id="carrello" value=""
name="libri_da_aggiungere_al_carrello">
ma ho notato che i dati vengono passati solo ad uno dei due form, a
quello che viene prima, penso per via di una duplicazione di id o di
name.. come posso risolvere la cosa?
- tutto quanto fatto mi serve perchč quando viene premuto il puslante
del form (uno dei due, a questo punto) venga eseguito uno script PHP;
tuttavia: č possibile senza far ricaricare la pagina fare questa cosa,
cioč eseguire uno script  PHP (con un'immagine trasparente), ma č
ANCHE possibile cambiare qualcosa a video, per es. vorrei che scompaia
il checkbox.. č possibile farlo senza ricarcare la pagina?
Mhaxx

Ti chiedo un'altra cosa.. (prometto che è l'ultima! :)
<INPUT type="checkbox" onchange="add2carrello(this);" value="<?= $id
?>" style="width: 12px;" <?php if (...) print "checked" ?> >
Vorrei fare in modo che quando ricarico (per motivi che non ti sto a
spiegare) la pagina con i checkbox, questi siano spuntati se il loro
codice era stato inserito dalla add2carrello.
In altre parole ho bisogno di una condizione nell'if del codice PHP
che vedi per far stampare checked o meno. In pratica si tratta di
vedere se era stato inserito il codice $id, cioè il value.
Probabilmente non si può usare PHP, bisogna usare un JS con una specie
di write('checked') che viene fatta solo se vale questa condizione,
che però non so come scrivere nè dove scriverla.. se potessi
aiutarmi..
Grazie tante,
Maxx

pronta per essere splittata in un vettore.
Marco, ho sempre usato questo codice e funzionava alla grande.. ora
scopro che su Safari (il browser per Mac) non funge! :-(
Sai darmi una spiegazione? Hai per caso modo di testarlo su Safari?
Forse non supporta JS, può essere?
Fra l'altro ho visto che neppure su Opera funge..
Mhaxx

Direi, visto che uso solo Mac OS X :-)
Se ti mando via email la pagina, puoi controllare che funzioni? Non ho
proprio la possibilità di avere un Mac sottomano..
Mhaxx

>Si`, non supporta onChange sulle checkboxes.
Solo sulle checkbox spero.. perchè ho acnhe una SELECT:
<SELECT size=1 name="quantita"
onchange="gestione_quantita_da_modificare(this);">
Posso star tranquillo, questa la lascio così e funziona vero?
Mhaxx

OS X, e dopo quei cambiamenti non era riportato acun errore.
Ok, grazie 1000.
Mhaxx

problema visibile ne' riportato in console. Direi che va bene :-)
Ok
Mhaxx