Форма ввода теряет фокус при нажатии полосы прокрутки в IE - PullRequest
5 голосов
/ 18 февраля 2010

Я надеюсь, что кто-то может мне помочь. Я знаю, что это обсуждалось здесь ранее, но пример является прототипом и чужд мне. Я ищу строгое решение javascript или jquery. У меня есть пример настройки здесь . Нажмите на полосу прокрутки в FF, и вы не получите предупреждение, но нажмите на него в IE, и вы получите. Пожалуйста, помогите мне, спасибо!

Ответы [ 2 ]

6 голосов
/ 20 сентября 2011

У меня была такая же проблема, и это работает для того, что нужно сделать. Просто верните фокус на элемент.

$('#divWithScrollBar').scroll(
    function () {
        $('#elementThatLosesFocus').focus();
    });

Это событие каким-то образом вызывается после размытия элемента, но до того, как событие onblur запускается. На самом деле не обращал на это внимания, но похоже, что это происходит.

Прокрутка выглядит немного медленной, но она работает.

IE должен мне много часов назад.

6 голосов
/ 18 февраля 2010

После некоторых поисков я придумал этот ответ . Насколько я знаю, вы не можете на самом деле отменить событие размытия, и при этом вы не можете вызвать событие фокуса одновременно. Это то, что я не понимаю ... вы можете размыть фокус, но вы не можете сфокусироваться на размытии. В любом случае, мое решение - использовать функцию setTimeout для вызова события фокусировки через 1 мс после потери фокуса.

var o = this;
oTimeout = setTimeout(function(){
    o.focus();
},1);

Используя события mouseenter и mouseleave, я установил логическое значение для ссылки на событие размытия

$("div#box").mouseenter(function(){
    changeFocus(1);
}).mouseleave(function(){
    changeFocus(0);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...