mmmaaak
@mmmaaak

Как гарантировать порядок вызова обработчиков событий jQuery?

Знатоки jQuery, есть ли возможность гарантировать порядок вызова обработчиков событий у разных элементов? Пример: есть input, на нем висит обработчик события blur. В этом событии корректируются введенные туда данные. И есть рядом button: при нажатии на него, данные отправляются на сервер.

Код уже написан, много переписывать не хочется, ищу минимальный костыль, чтоб работало так: когда мы вводим данные в input, которые необходимо корректировать, то нужно предотвратить отправку данных на сервер. Я хочу, чтоб click по кнопке вызывался раньше, проверял, если данные некорректные, то return; из обработчика, и ничего не отправлять. Потом обработчик blur скорректирует данные, чтоб клиент видел, что данные скорректировались и подтвердил отправку повторным нажатием на button. Если же данные изначально введены корректно, то условие в обработчике click доходило бы до отправки данных.

Второй вариант: так как blur вызывается раньше, было бы круто в ситуации, когда данные пришлось корректировать, в этом обработчике каким-то чудом предотвратился вызов обработчика click по button, но так как это разные элементы, и независимые друг от друга события, подозреваю, что такой вариант неочень..

Как поступить при таком раскладе? Спасибо.
  • Вопрос задан
  • 492 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
Можно делать кнопке disabled в момент автокоррекции. Можно завести свой набор флагов, типа "is_verified", "is_autocorrected" и проверять их состояние из обработчика кнопки. Выработайте четкую схему как бы вы хотели это видеть, тогда гораздо легче будет понять как это сделать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vacslav-dev
web-developer
Если button и imput элементы формы, и при клике на button происходит отправка данной формы, то можно повесить обработчик на событие submit формы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект
22 нояб. 2024, в 21:44
50000 руб./за проект