Как я не могу реагировать на событие размытия при выборе автозаполнения YUI
Я пытаюсь по-разному реагировать на события onBlur и onSelect с автозаполнением YUI. Мне нужно скрыть AC, когда пользователь щелкает где-то еще и оставить его там на выбор. Проблема в том, что событие размытия запускается также и при выборе. Я не смог найти событие, которое вызывается только при нажатии за пределами AC, и я действительно застрял, ловя событие размытия каким-то образом в случае выбора, так как оно срабатывает перед событием select.
Так что, в основном, я хочу получить такой вывод:
щелкните за пределами ac: BLUR
выберите значение: SELECT val
Но то, что я получаю, это:
щелкните за пределами ac: BLUR
выберите значение: BLUR, SELECT val
Что приводит к скрытому AC при выборе.
1 ответ
Так как событие размытия срабатывает, когда вы выбираете что-то, и, скорее всего, вы не сможете этого предотвратить, для размытия установите тайм-аут. Если таймер истекает, делайте то, что вы обычно делаете на размытии.
В случае выбора отмените таймер.
Какой-то очень свободный псевдокод:
var blurTimer = null;
function handleBlur() {
blurTimer = setTimeout(function() {
// do what you normally do onblur
}, 50);
}
function handleSelect() {
clearTimeout(blurTimer);
// do what you normaly do on select
}