Как отменить событие onblur элемента управления в javascript? - PullRequest
1 голос
/ 15 сентября 2010

Я передаю фокус на элемент управления при событии onblur раскрывающегося списка, фокус переносится на нужный элемент управления, а также выполняется событие onblur, написанное для этого элемента управления, которое мне не нужно. Как я могу предотвратить это?

Спасибо
Кишор

1 Ответ

2 голосов
/ 15 сентября 2010

Если вы установите фокусировку, когда фокус уже установлен, вы можете ожидать срабатывания всех нечетных событий.Эта проблема не относится к Javascript;это происходит на каждом графическом интерфейсе, с которым я когда-либо работал.Вы не можете надежно остановить запуск событий, и вы, вероятно, не получите те же самые в том же порядке, если вы попробуете другой браузер или запустите на другой ОС.

Я всегда использовалпеременная boolean в качестве флага, чтобы указать, что я сам занимаюсь настройкой фокуса, и спокойно возвращаюсь из onblur () и т.п., когда этот флаг установлен.Что-то вроде

var isFocusGettingMessedWith;
...
isFocusGettingMessedWith = true;
someControl.focus();
isFocusGettingMessedWith = false;
...
function someControl_onblur(event) {
    if (!isFocusGettingMessedWith) { /* do something */ }
}
function otherControl_onblur(event) {
    if (!isFocusGettingMessedWith) { /* do something */ }
}

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

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