Newsgroup: it.comp.lang.javascript
Titolo: Controllare tutti i campi di un form

Esiste una scorciatoia per controllare che "tutti" i campi di un form non
risultino vuoti?
Oppure si deve controllare ogni singolo campo?
ciao
Fausto

 Fausto
Ciao
Gianni

 risultino vuoti?
Usi la collection elements.
Per esempio:
var els=document.forms[0].elements,
	el=null;
	errorMessage="";
for (var i=0;i<els.length;i++){
	el=els[i];
	if ((el.type=="text"||el.type=="textarea") && el.value=="")
		errorMessage+="-il campo denominato '"+
el.name
+' deve 
essere avvalorato";
}
if (errorMessage!="")
	alert("Attenzione!\r\n"+errorMessage);
Giusto un esempio, che ti cicla solo gli elementi con type "text" e 
"textarea" (evita quindi di controllare il value di campi hidden, radio 
e checkbox).
Cmq non sempre e' la scelta migliore, ciclare la collection elements, 
talvolta e' preferibile gestire in modo opportuno i vari campi.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

Grazie a tutti per le puntuali e velocissime risposte.
ciao
Fausto

 !form.elements[i].value){
Questo tipo di "scorciatoie" talvolta sono scelte infelici.
Se si tratta di un campo numerico, e l'utente inserisce uno 0, secondo 
il tuo controllo il campo risulterebbe non avvalorato.


 il tuo controllo il campo risulterebbe non avvalorato.
Cacchio e' vero non ci avevo pensato :(
Allora il mio codice corretto e aggiornato (controlla text e textarea)
diventerebbe:
<script type="text/javascript">
function controlla(form)
{
    for(var i=0,max=form.elements.length,el=null;i<max;++i){
        el=form.elements[i];
        if((el.type=='text'||el.type=='textarea')&&el.value==""){
            alert("Errore al campo: "+
el.name
);
            el.focus();


         if((el.type=='text'||el.type=='textarea')&&el.value==""){
Che e' poi il controllo che ho fatto io, vedo che hai anche adottato 
l'assegnazione di "el" :)
Ma andando piu' sullo specifico, il controllo migliore sarebbe da 
operare con le regexp, come ha fatto Marco, in quanto che se per 
assurdo l'utente e' bastardo e mi inserisce uno spazio nel campo, JS lo 
prende come avvalorato.
Nel mio post, ho cercato solo di mostrare "l'iter" senza addentrarmi 
troppo nelle relazioni dello specifico. Di fatto, uno script 
"completo" che comprenda le varie casistiche scorrendo la elements, e' 
molto piu' complesso di quelli postati nell'NG, e a livello didattico 
sarebbe servito ben poco.


 troppo nelle relazioni dello specifico.
Sì, come del resto anch'io :)
Eh, c'e' anche da aggiungere che penso che sia abbastanza inutile fare un
controllo pignolosissimo, intanto e' d'obbligo anche un controllo
server-side! Infatti, tra le altre cose JS si puo' disattivare, in piu'
spesso accade che il tipo di controllo non lo si vuole sventolare troppo...

 el.value==" ")
Perche' che ne sai tu a priori di quanti spazi inserisce l'utente 
bastardo? :)
Nelle mie applicazioni Javascript ho un bel metodo nell'oggetto Stringa 
chiamato "isEmpty()" che mi restituisce true in caso il campo sia 
vuoto, a prescindere. Ovviamente, funziona tramite regexp.


 vuoto, a prescindere. Ovviamente, funziona tramite regexp.
Giusto...
Comunque suppongo che gli utenti bastardi dentro si siano fatti furbi e
riempiano i campi con stringhe tipo: "kjhkjh" op "mnbmnb"...
Io faccio così :))

 Io faccio così :))
Se il "goal" e' solo quello di avvalorare un campo, beh, allora e' 
raggiunto anche se scrivi "kjhkjh" :)
ovviamente, dipende dal context. Una stringa del genere andrebbe bene 
solo per campi che non devono seguire alcun pattern (tipo ad esempio 
nome/cognome) non per indirizzi mail o altro :)
