Se ho capito bene, il tuo if sta dentro il for ed essendoci anche l'else viene eseguito un comando una sola volta al primo passaggio. Cioè, al primo giro (con i=0) vengono controllate le condizioni su element[0]: se le condizioni sono verificate viene eseguito il corpo dell'if (quindi si esce dalla funzione), se no viene eseguito il corpo dell'else (che esce dalla funzione pure lui) ...in pratica in ogni caso non scorri tutti gli elements ma esci sempre al primo!
Invece, nella soluzione che ti ho proposto, non essendoci l'else, se le condizioni non sono verificate si coninua a ciclare; se si arriva alla fine del ciclo è perchè non si sono mai verificate le condizioni di invio e si può quindi segnalare l'errore e restituire false.
Se preferisci, un'altra versione analoga potrebbe essere:
var trovato=false;
for(var i=0;i<e.length&&trovato==false;i++)
if(-condizioni-){
trovato=true;
}else{ trovato=false;
}
if(trovato==false){
alert("ATTENZIONE PER PROSEGUIRE E' NECESSARIO INDICARE ALMENO UNA SETTIMANA DI PERMANENZA");
return false;}
else return true;