cavicchiandrea
ti ringrazio per la tua risposta
Stamane ho sperimentato la nuova funzione aggiornata come mi hai suggerito.
Tuttavia rimaneva un problema nella "if".
codice:
if (theForm.elements[i].value == "" && theForm.elements[i].className == "si") {
.................
}else if (theForm.elements[i].type=="checkbox" && theForm.elements[i].checked && theForm.elements[i].className == "si") {
................
}
In questo modo viene testato prima la proprietà value del controllo, poi viene valutato se il controllo in oggetto è una checkbox e, di conseguenza il form non viene mai accettato.
Ho pensato di invertire le condizioni nella "if" e di cambiare leggermente il codice ed ho parzialmente ovviato al problema.
codice:
if (theForm.elements[i].name == "privacy") { // questo è il nome della checkbox
...............
} else if (theForm.elements[i].value == "" && theForm.elements[i].className == "si") {
...................
}
A sto punto c'è un altro problema: non posso bloccare il FORM se theForm.elements[i].checked ma se non è checked .
per cui la mia, temporanea e provvisoria soluzione sarebbe la seguente:
codice:
function check_valid(theForm) {
for (i=0; i < theForm.elements.length; i++) {
if (theForm.elements[i].name == "privacy") {
if (theForm.elements[i].checked) {
var errato="";
} else {
errato = theForm.elements[i].name + ": campo non spuntato";
}
if (errato != ""){
alert(errato);
theForm.elements[i].value = "";
theForm.elements[i].focus();
return false;
}
} else if (theForm.elements[i].value == "" && theForm.elements[i].className == "si") {
alert (theForm.elements[i].name + ": campo vuoto non accettabile");
theForm.elements[i].value = "";
theForm.elements[i].focus();
return false;
}
}
}
Quel che in questa routine mi disturba un poco è quel if (theForm.elements[i].checked) {
Non potrei dire da subito di controllare se il controllo non è checked?
come si potrebbe dirlo?
In questo modo accorcerei la routine ed eviterei del codice inutile in questo modo:
invece di dire:
codice:
if (theForm.elements[i].checked) {
var errato="";
} else {
errato = theForm.elements[i].name + ": campo non spuntato";
}
if (errato != ""){
alert(errato);
theForm.elements[i].value = "";
theForm.elements[i].focus();
return false;
}
potrei scrivere semplicemente:
codice:
if (theForm.elements[i].non-checked) { // non so come indicare lo stato non-checked
alert("devi flaggare il controllo");
theForm.elements[i].focus();
return false;
}
Grazie ancora