Salve a tutti, era da un pò che non scrivevo in javascript e ricordavo già le stranezze che mi accadevano.
Comunque al momento sto provando a fare il controllo dei dati inseriti in un form (esempio classico).
Nello specifico sto cercando di rilevare i campi lasciati vuoti dall'utente.
Ogni elemento da compilare obbligatoriamente è stato contrassegnato dalla classe "req".
Quindi lato javascript ho eseguito una chiamata alla funzionecodice:var arr = document.getElementsByClassName("req");
Già qui ho stranezze!Gli elementi obbligatori sono 11 ma a volte me ne conta meno, come cavolo è possibile?
Comunque poi ciclo tutto l'array "arr" in base alla sua lunghezza (nel mio caso sono 11 gli elementi obbligatori) e nel caso andassi a trovare elementi vuoti aggiungevo una classe così da farlo capire all'utente.
Mentre scorro l'array noto che nell'array sembra che non ci siano tutti gli elementi con la classe "req", infatti non ottengo gli elementi di input "cognome", "città", "civico" e "nome utente". Perchè?
La lunghezza dell'array è di 11 elementi ma il ciclo for lo fa solo 6 volte!
Il codice è una cavolata ma intanto non funziona
Sto già impazzendo e maledicendo javascript
Vi allego i file php e js. Posto il codice javascript
codice:window.onload=function(){ if(!document.getElementById || !document.createElement){ return; } else{ document.forms[0].onsubmit=function(){ if(valida()) { alert("controllo superato, faccio il submit"); document.forms[0].submit(); } else{ alert("Alcuni campi non sono stati selezionati"); return(false); } }; } }; function valida(){ var arr = document.getElementsByClassName("req"); valido=true; dim = arr.length; alert("Numero di elementi obbligatori "+dim); for(var i=0 ; i<dim ; i++){ alert("i="+i+" "+arr[i].name); if( arr[i].type=="text" && (arr[i].length<=0 || arr[i].value=="") ){//campo text valido=false; arr[i].className="segnala"; } else if(arr[i].type=="select-one" && arr[i].value==""){//campo select valido=false; arr[i].className="segnala"; } } alert("Ho ciclato "+i ); return valido; }