У меня есть несколько проверок, происходящих на первом этапе формы.

При нажатии следующей кнопки запускается проверка возраста, если она истинна, тогда запускаются три функции.

function checkAge(form)
{ 
  return false;
}

else {
  validate('theForm','email');
  hideFormOne();
  showPartTwo();
  return false;
};

И функция

function validate(form_id,email){
  var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  var address = document.forms[form_id].elements[email].value;
  if(reg.test(address) == false) {
    alert('Invalid Email Address');      
    return false;
  }
}
function hideFormOne(container1)
{
  document.getElementById('container1').style.display='none';
}
function showPartTwo(container2)
{
  document.getElementById('container2').style.display='block';
}

Моя проблема в том, что, если электронная почта недействительна, всплывает предупреждение, но затем, когда оно закрывается, оно продолжает выполнять функции скрытия и показа. Мне нужно, чтобы запускать функции скрытия / показа только в том случае, если электронная почта действительна.

0
Zac 2 Июл 2010 в 12:22

4 ответа

Лучший ответ

Поскольку ваша функция validate возвращает значение true или false, вы можете использовать это значение, чтобы решить, что делать после выполнения функции.

if(validate('theForm', 'email')) {
   hideFormOne();
   showPartTwo();
}

Выше это краткий способ написания

var isValid = validate('theForm', 'email');
if(isValid) {
   hideFormOne();
   showPartTwo();
}

... где isValid получает значение, которое возвращается из validate

4
David Hedlund 2 Июл 2010 в 08:25

Измените функцию validate, чтобы она возвращала значение true, если оно действительно.

Тогда:

else {
  if validate('theForm','email') {
    hideFormOne();
    showPartTwo();
  };
  return false;
};
0
Justin L. 2 Июл 2010 в 08:27

Затем измените свою логику в этой части кода, чтобы учесть возвращаемое значение validate

if (validate('theForm','email')) {
    hideFormOne();
    showPartTwo();
}
return false;

};

Вам также необходимо изменить validate, чтобы он возвращал true, если адрес электронной почты действителен.

0
Tarski 2 Июл 2010 в 08:27

Проверьте, возвращает ли validate() значение false, а затем верните false из вызывающей функции:

if (!validate('theForm','email'))
{
    return false;
}

hideFormOne();
showPartTwo();
return false;
0
BoltClock 2 Июл 2010 в 08:25