У меня есть поле ввода текста, в котором используется автозаполнение ajax. Результаты отображаются на панели jScrollPane с вертикальной полосой прокрутки.
У меня возникла проблема, связанная с IE, когда событие размытия поля ввода запускается, когда пользователь щелкает полосу прокрутки в раскрывающемся списке jscrollPane (стрелки вверх и вниз полосы прокрутки генерируются как теги привязки, показанные ниже).
Насколько я понимаю, return false должен остановить распространение события, и я ожидаю, что события mousedown
и click
оба возвращают false для тегов привязки. Это отлично работает в Firefox и Chrome, но не в IE.
Хотя это не показано ниже, я также пытался использовать следующий код в своем событии, но безрезультатно:
e.preventDefault ? e.preventDefault() : e.stop();
e.returnValue = false;
e.stopPropagation();
Думаю, мой первый вопрос:
Должен ли я ожидать, что остановка распространения одного типа событий фактически остановит распространение других типов событий?
т. е. если запускается событие mousedown
, которое возвращает false, предотвратит ли это срабатывание событий размытия или фокусировки?
Как обойти эту проблему, чтобы IE работал так же, как Firefox и Chrome?
var rf = function() { return false; };
$('<a></a>')
.attr({'href':'javascript:;', 'className':'jScrollArrowUp'})
.css({'width':settings.scrollbarWidth+'px'})
.html('Scroll up')
.bind('mousedown', function()
{
currentArrowButton = $(this);
currentArrowDirection = -1;
onArrowMouseDown();
return false;
})
.bind('click', rf)
$("#InputBox").blur(function(e) {
hasFocus = 0;
if (!config.mouseDownOnSelect) {
hideResultsNow();
}