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

Я выполняю две проверки на стороне клиента для события 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, я никогда не запускал вторую проверку. Кто-нибудь, кто сможет быстро заметить то, что я здесь упустил? Пожалуйста?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
839
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

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

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

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

Этот код выполнит проверку только один раз, когда кнопка настроена. Вы хотите обернуть их анонимной функцией или сделать их строкой.

sblundy 03.11.2008 23:38

Почему ответ идентичен трем другим ответам, и только один был отклонен?

matt b 03.11.2008 23:47

Кроме того, я не пытаюсь исправить то, как он прикрепляет обработчик к объекту (что можно улучшить), а просто недостижимый оператор возврата.

matt b 03.11.2008 23:48

Спокойные ребята, спасибо. Теперь я могу вызвать обе проверки. Хорошая вещь.

Julius A 03.11.2008 23:56

Это потому, что возврат предотвращает запуск второй проверки. Попробуй это

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

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

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

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

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

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

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

Другие вопросы по теме