Continuare verificare

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
claUdiu
Mesaje: 313

Continuare verificare

Buna, am si eu o problema cu acest script:

Cod: Selectaţi tot

<script type="Text/javascript">

function Verifica(){

var Nume = document.getElementById('name');
var Email = document.getElementById('email');
var Post = document.getElementById('post');

if(Nume.value.length <= 3){
document.getElementById('erroareNume').innerHTML = 'Numele trebuie sa fie mai mult de 4 caractere';
return false;
}else if(Nume.value.length >= 20){
document.getElementById('erroareNume').innerHTML = 'Numele trebuie sa fie mai mic de 20 de caractere';
return false;
}else if(Nume.value.length > 3){
document.getElementById('erroareNume').innerHTML = '';
return false;
}

if(Email.value.length < 5){
document.getElementById('erroareEmail').innerHTML = 'Emailul trebuie sa fie mai mare de 5 caractere!';
return false;
}



}

</script>

<form action="post_comm.php" method="POST" onSubmit = "return Verifica()">
<div id="erroareNume"></div>
<br/>
<div id="erroareEmail"></div>
<br/>
Nume: <input type="text" name="name" id="name"/>
Email: <input type="email" name="email" id="email"/>
<br/>
Post:<br/>
<textarea cools="10" rows="5" id="post" name="post"/></textarea>
<Br/><br/>
<input type="submit" value="Trimite"/> <input type="reset" value="Sterge"/>
</form>
Ideea este ca verifica bine la campul Nume, dar cand totul este perfect (adica > 3 si < 20) se opreste aici si nu mai verifica si pentru campul Email...

P.S: Daca scto linia:

Cod: Selectaţi tot

else if(Nume.value.length > 3){
document.getElementById('erroareNume').innerHTML = '';
return false;
}
o sa mearga perfect.... Care ar putea fi cauza? Ms mult.
Se spune ca...."omul tot invata in viata". Dar...Totusi...Trebie sa ne oprim undeva, nu?

MarPlo Mesaje: 4343
Problema e de la return. Instructiunea return returneaza rezultatul si opreste executia codului dupa ea.
Daca vrei sa continue verificarea si dupa prima eroare, trebuie return adaugat la urma.
Vezi cum e in exemplu urmator:

Cod: Selectaţi tot

<script type="Text/javascript"><!--
var regx_mail = /^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$/;    // RegExp pt e-mail

function Verifica(){
  var Nume = document.getElementById('name');
  var Email = document.getElementById('email');
  var Post = document.getElementById('post');

  // sterge notificari de eroare
  document.getElementById('erroareNume').innerHTML = '';
  document.getElementById('erroareEmail').innerHTML = '';
  var re = true;       // variabila returnata de functie (setata False la eroare)

  if(Nume.value.length <= 3){
    document.getElementById('erroareNume').innerHTML = 'Numele trebuie sa fie mai mult de 4 caractere';
    re = false;
  }
  else if(Nume.value.length >= 20){
    document.getElementById('erroareNume').innerHTML = 'Numele trebuie sa fie mai mic de 20 de caractere';
    re = false;
  }

  if(Email.value.search(regx_mail) == -1){
    document.getElementById('erroareEmail').innerHTML = 'Adaugati o adresa corecta de e-mail!';
    re = false;
  }

  return re;
}
--></script>

<form action="post_comm.php" method="post" onSubmit = "return Verifica();">
<div id="erroareNume"></div><br/>
<div id="erroareEmail"></div><br/>
Nume: <input type="text" name="name" id="name"/>
Email: <input type="email" name="email" id="email"/><br/>
Post:<br/>
<textarea cols="10" rows="5" id="post" name="post"/></textarea><br/><br/>
<input type="submit" value="Trimite"/> <input type="reset" value="Sterge"/>
</form>

claUdiu Mesaje: 313
Multumesc mult, MarPlo! Merge.
Se spune ca...."omul tot invata in viata". Dar...Totusi...Trebie sa ne oprim undeva, nu?