codepen.io/cleric/pen/upsLc — поставил tabindex положительные для ручного взаимодействия.
Помним, что:
— событие
blur, как и
focus, отменить нельзя.
— событие
blur наступает всегда раньше, чем
focus
Поэтому поступим примерно так:
— вешаем на оба события обработчик
— действия в обработчике на
blur перемещаем в конец очереди (
event loop stack)
— в обработчике
focus отменяем эти действия