luca72 <lucaberto (AT) libero (DOT) it> wrote:
Quote:
Per la prima parte mi rispondo da solo:
function Valida(){
var cam = ["ris_p", "ris_s", "ris_t", "ris_q" ]
var lung = cam.length
for (var i=0; i<=lung; i++){ |
Però ti sei risposto male.

Hai un array di quattro elementi, quindi con length pari a 4, i cui
indici sono 0, 1, 2 e 3. Con la condizione che hai impostato, vai a
scorrere 5 elementi, fino all'indice 4 che non esiste.
Il codice corretto è senza il segno di uguaglianza:
for (var i = 0; i < lung; i++ ){
Quote:
Non riesco a capire perchè se metto
var a = document.getElementById(cam[i]).length
if (a == 0 ){
alert('Pirla compila tutti i campi')
break
non funziona.
indici sono 0, 1, 2 e 3. Con la condizione che hai impostato, vai a
|
Premesso che "cam" contenga gli ID e non i NAME, di eventuali campi
input, e che siano univoci (gli ID devono esserlo, i NAME no); stai
probabilmente cercando di recuperare la length dei valori contenuti
in tali campi... In tal caso, devi passare dalla proprietà "value",
dato "document.getElementById()" ti restituisce un oggetto:
var a = document.getElementById(cam[i]).value;
alert(a.length);
Quote:
Però mi date un aiuto sull'else che vi ho chiesto prima. |
In verità l'else non è necessario. Basta che al posto di un "break"
tu metta un "return false":
function Valida(){
for ( bla bla bla ){
if ( no compilato )
return false;
}
return true;
}
In questo modo, se la funzione non riscontra eccezioni ti ritornerà
"true" altrimenti "false".
N.B.
Di solito con i campi input è più comodo racchiuderli in una form e
usare il name, riferendosi alla collection "document.forms", e alla
"elements". Esempio:
function dumpElement( el ) {
alert( "ID: "+el.id+"\r\n"+
"Name: "+el.name+"\r\n"+
"Type: "+el.type );
}
var els = document.forms[0].elements, ln = els.length;
for (var i=0;i<ln;i++){
dumpElement(els[i]);
}
--
"Se c'è qualcosa di più importante del mio ego su questa nave,
la voglio catturata e fucilata."