Остановить выполнение функций JavaScript - PullRequest
0 голосов
/ 02 июля 2010

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

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

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';
}

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

Ответы [ 4 ]

4 голосов
/ 02 июля 2010

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

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

Выше приведен краткий способ записи

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

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

0 голосов
/ 02 июля 2010

измените вашу validate функцию на true, если она верна.

затем:

else {
  if validate('theForm','email') {
    hideFormOne();
    showPartTwo();
  };
  return false;
};
0 голосов
/ 02 июля 2010

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

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

};

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

0 голосов
/ 02 июля 2010

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

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

hideFormOne();
showPartTwo();
return false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...