Javascript - несколько проверок на стороне клиента для одного и того же события - PullRequest
0 голосов
/ 03 ноября 2008

Я выполняю две проверки на стороне клиента в событии samve. Я определил мои проверки, как показано ниже

btnSearch.Attributes["OnClick"] = "javascript:return prepareSave(); return prepareSearch();"

Псевдокод для

prepareSave():
{
  if (bPendingchanges)
    {
     return confirm('Need to save pending changes first, click OK and loose changes or cancel to save them first')
    }
  else
   {return true}
}

Псевдокод для

prepareSearch():
{
  if (bNoSearchText)
    {
      alert('Please specify search criteria before proceeding')
      return false;
   }
  else
   {return true;}
}

Когда bPendingchanges=false, я никогда не запускаю вторую проверку. Кто-нибудь, кто может быстро определить, что я здесь упустил? Пожалуйста?

Ответы [ 4 ]

2 голосов
/ 03 ноября 2008

return, как следует из названия, возвращает управление к тому, что называется рассматриваемым кодом. Следовательно, все, что находится после оператора return

return prepareSave(); return prepareSearch();
//                    ^^^^^^^^^^^^^^^^^^^^^^^ e.g. this part

никогда не выполняется. Попробуйте return (prepareSave() && prepareSearch());

0 голосов
/ 03 ноября 2008

Это потому, что возврат не позволяет запустить вторую проверку. Попробуйте это

btnSearch.Attributes["OnClick"] = "javascript:return prepareSave() && prepareSearch();"
0 голосов
/ 03 ноября 2008

"javascript:return prepareSave(); return prepareSearch();"

1) Вы не должны иметь «javascript:»
2) return prepareSearch(); никогда не будет выполнено, потому что "return prepareSave(); выходит из вашего обработчика событий

Попробуйте "return (prepareSave() && prepareSearch());"

0 голосов
/ 03 ноября 2008

Ваше второе return заявление никогда не будет достигнуто. Выполнение останавливается после javascript:return prepareSave().

Похоже, вы хотите вернуть true, если обе функции возвращают true - поэтому выполните:

btnSearch.Attributes["OnClick"] = javascript: return prepareSave() && prepareSearch();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...