Как я могу не реагировать на событие размытия при выборе автозаполнения YUI

Я пытаюсь по-разному реагировать на события onBlur и onSelect с автозаполнением YUI. Мне нужно скрыть AC, когда пользователь щелкает где-то еще, и оставить его там при выборе. Проблема в том, что событие размытия также запускается при выборе. Я не смог найти событие, которое запускается только при нажатии вне AC, и я действительно каким-то образом застрял в ловле события размытия в случае выбора, поскольку оно запускается до события выбора.

Итак, в основном я хочу, чтобы вывод выглядел так:

щелкните вне ac: РАЗМЫТИЕ

выберите значение: ВЫБЕРИТЕ значение

Но что я получаю:

щелкните вне ac: РАЗМЫТИЕ

выберите значение: BLUR, SELECT val

Что приводит к скрытому AC при выборе.


person user1437515    schedule 03.06.2014    source источник


Ответы (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
}
person Greg Burghardt    schedule 03.06.2014