Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Прервать хэндлер потери фокуса (https://javascript.ru/forum/events/45858-prervat-khehndler-poteri-fokusa.html)

BETEPAH 18.03.2014 19:23

Прервать хэндлер потери фокуса
 
Можно ли как-то при потере фокуса полем input остановить выполнение хэндлера для onblur, если курсор находится над определенным элементом?
Пришлось велосипедить свой date picker. Вызываю его по onfocus на поле, скрываю, соответственно по onblur. Но если onblur происходит во время клика по кнопке переключения месяца, необходимо прервать исщезновение управляющего блока.
Вот упрощенный код:
<input id="date" type="text" placeholder="ткни в меня">
<div id="div">
    <a id="button" href="">кнопка</a>
</div>
<script>
$('#date').on('focus', function() {
    $('#div').show();
}).on('blur', function() {
    $('#div').hide();
});
$('#button').on('click', function() {
    $('#date').val('ta-dam');
    return false;
})
</script>

Вот песочница: http://jsfiddle.net/PbpkY/

Посоветуйте, пожалуйста, что-нибудь хорошее.

danik.js 18.03.2014 19:48

А ты чтобы фокус не терялся отменяй событие mousedown по календарику.
Вобще, например в хроме, в нативной реализации фокус может ходить по кнопкам календаря, но фокус поля при этом не сбрасывается. В кастомной реализации такого не добъешься. Но ведь фокус в календаре не сильно то и нужен.

BETEPAH 18.03.2014 19:53

danik.js,
отлично! то, чего не хватало, спасибо!
$('#div').on('mousedown', function() {
    return false;
})


p.s.
Плюсануть пока не имею возможности, сорри


Часовой пояс GMT +3, время: 03:06.