Newsgroup: it.comp.lang.javascript
Titolo: Stupidata con una singola checkbox

<form name="modulo" action="#">
<input type="hidden" name="x" value="">
<input type="checkbox" name="x" value="wow">
<input type="submit" value="invia">
Ecco qui un form con un campo hidden, una checkbox e un tasto di invio.
Riuscireste a scrivere una funzione che metta a checked la checkbox ?
io ho scritto (vedi sotto) ma non funziona
<HTML>
<BODY onload="prova();">
<script language="javascript">
function prova(){
        modulo.x.checked=true;
}
</script>
<form name="modulo" action="#">
<input type="hidden" name="x" value="">
<input type="checkbox" name="x" value="on">
<input type="submit" value="go">
</form>
</body>
</html>
Idee ??
grazie
J

PS: La hidden č assolutamente necessaria.
Purtroppo i browser non inviano via form le checkbox se non sono checked.
A me serve comunque riceverle, ecco il motivo della hidden.
Il problema č perň che non sono piů in grado di gestirne lo stato.
J

Ma hai cambiato il name della hidden... a me serve che sia uguale a quello
della checkbox.
J

Il discorso è questo:
io ho un form. Ricevo dei dati da questo form in uno script php e me li
salvo in un db.
Domani, l'utente riapre quel form e deve ritrovarsi i campi che aveva
compilato ieri uguali a come li aveva submittati.
Il fatto particolare è che lo script php non sa come è fatto il form. Esso
riceve solo, per ogni variabile, il suo valore.
Per le checkbox, la variabile viene inviata solo e unicamente se la checkbox
è checkkata.
Se non è checkata la variabile non compare.
Ora...se uno invia il form con la checkbox ON (checckata) e domani lo
riapre, la checkbox la trova ON.
Se poi la disattiva (OFF) lo script php non ricevendo più quella variabile
non è in grado di valutarne lo stato di OFF. Certo si potrebbe dire: beh, se
non la riceve vuol dire che era OFF, ma si ritorna daccapo poichè lo script
php non può sapere cosa sta succedendo quindi non è in grado di aggiornare
il database che salva i dati dei moduli..
Invero per i text il problema non si pone. Infatti essi vengono submittati
anche se sono vuoti (o sbaglio ?)
J

Mi pare il rpoblema sia su Php, che non conosco.
Se io tuttavia avessi un problema come il tuo, e cioè (e dimmi se ho capito
bene)
1) devo sapere se un utente ha selezionato una check
2) all'invio devo selezionarle tutte
farei così:
per checkarle tutte:
for(var i=0;i<document.nomeForm.elements.length;i++){
if(document.nomeForm.elements[i].type=="checkbox"){document.nomeForm.elements[i].checked=true}
}
Il che si fa ALLA fine.
Se un utente clicca e seleziona una checkbox prima, io salverei tutti i dati in
una array tramite onClick.
tipo:
function salvaCheck(ogg,nome){
//ripulisci array prima!
for(var i=0;i<nomeArray.length;i++){
if(nomeArray[i]==nome){nomeArray[i]=null;break}
}
if(ogg.checked==true){
nomeArray.length++
nomeArray[nomeArray.length-1]=nome
}
}
la inovchi dall' input
<input type="checkbox" name="mioNome" onClick="salvaCheck(this,'mioNome')">
this senza apici, il nome della check con apici; INOLTRE devi avere creato una
array con il nome nomeArray, tipo
var nomeArray=new Array()
Occhio che se l'utente seleziona e deseleziona spesso una stessa casella, la
array porterà comuqnue delle entry vuote, perciò sul lato server devi
controllare che non vi siano
nel valore passato caratteri null o false, e cioè batsa che consideri solo gli
altri, quelli DEFINITI.
Poi al momento dell'inoltro affiderei la array come valore di un campo hidden,
con la seguente funzione:
function daiValori(ogg){
var joiner=nomeArray.join(",");
ogg.value=joiner;
}
invocata dall'evento che preferisci con
daiValori(document.nomeForm.nomeCampoHidden)
Prova a vedere sul tuo pc questo piccolo script se corrisponde alle tue
necessità:
<body>
<form name="nomeForm">
<input type="checkbox" name="mioNome"
onClick="salvaCheck(this,'mioNome');alert(nomeArray)">
<input type="hidden" name="ghost" value="">
<input type="button" value="test"
onClick="daiValori(this.form.ghost);alert('valore di campo
hidden:\n\n'+this.form.ghost.value)">
</form>
<script>for(var i=0;i<document.nomeForm.elements.length;i++){
if(document.nomeForm.elements[i].type=="checkbox"){document.nomeForm.elements[i].checked=true}
}
nomeArray=new Array();
function salvaCheck(ogg,nome){
//ripulisci array prima!
for(var i=0;i<nomeArray.length;i++){
if(nomeArray[i]==nome){nomeArray[i]=null;break}
}
if(ogg.checked==true){
nomeArray.length++
nomeArray[nomeArray.length-1]=nome
}
}
function daiValori(ogg){
var joiner=nomeArray.join(",");
ogg.value=joiner;
}
</script>
</body>
ciao
Alberto Vallini aka TrueLies
http://www.unitedscripters.com/
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:f27ead492cf6fd75305...@mygate.mailgate.org...
