我有一个使用 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();
}