Обработчики onclick и onblur - что раньше?
Добрый день!
Есть некий плагин на jquery, одна из разновидностей autocomplete. Суть плагина - организация быстрого поиска с подсказками, по типу яндекс-формы поиска. На инпут вешается обработчик .blur для скрытия дива с найденными подсказками при потере фокуса инпутом. В диве с подсказками выводятся ссылки, полученные ajax, на найденные результаты. При клике по этим ссылкам, переход осуществляется через раз - то просто скрывается див с подсказками, то идет переход по ссылке. Вопрос в следующем - это конфликт обработчиков? Как правильно расставить обработку событий, чтобы и blur() работал (пользователь может тыкнуть в любое пустое место и подсказки должны пропасть), и при кликах по ссылкам происходил переход по ним в 100% случаев, а не рандомно? |
Инпут потеряет фокус уже при нажатии кнопки мыши (mousedown), а событие click произойдет только при отпускании (mouseup) . а к тому времени список уже скроется (обработчиком onblur).
Поможет что-то типа item.addEventListener('mousedown', function(e) { e.preventDefault(); }); |
Цитата:
спасибо, попробовал. Событие на onblur при любых раскладах продолжает работать.. но пока переход по ссылке происходит, сбоев не видел работать addEventListener в IE не будет? (работаю из-под линухи, проверить не могу) |
В IE6-8 нету addEventListener. Либо пишем простую обертку для кроссбраузерного навешивания обработчиков, либо пользуемся либой товарища devote: https://github.com/devote/spike
blur и должен происходить, но теперь не по mousedown а по click, что и требовалось. |
Часовой пояс GMT +3, время: 06:10. |