IE - 如果选择框具有特定类,则阻止焦点(单击,双击)
Posted
技术标签:
【中文标题】IE - 如果选择框具有特定类,则阻止焦点(单击,双击)【英文标题】:IE - Prevent focus (click, doubleclick) on a select box if it has a specific class 【发布时间】:2011-01-15 09:53:56 【问题描述】:我正在使用 javascript 来模拟禁用的选择元素。由于 .net 验证器失败,我实际上无法禁用它,但这是另一回事。
我有以下功能:
function preventFocus(e)
if ($(this).hasClass("disabled"))
e.preventDefault();
this.blur();
这里叫:
$("#ProvinceID").toggleClass("disabled").bind('focus click dblclick', preventFocus);
在 IE 中双击选择框似乎仍然允许显示和选择项目。我尝试了 IE 开发工具栏,e.type 显示为焦点和 dblclick。这是一个 IE 错误,还是我需要捕捉其他事件?我也试过专注。
谢谢!
【问题讨论】:
【参考方案1】:这已经晚了 4 年,但我刚刚发现实际上有一种方法可以让 IE ≤ 8 来做 e.preventDefault()
on mousedown
在其他浏览器中所做的事情(这会阻止选择 并且 阻止焦点):设置unselectable
属性! http://jsbin.com/yagekiji/1
请注意,与始终建议的变通办法(始终归结为setTimeout(function() thingIDidntWantFocusStolenFrom.focus(); )
)不同,这首先可以防止焦点被mousedown
目标窃取!
unselectable
的有趣之处在于它不是继承的,因此它经常被忽略以支持 selectstart
事件(它会冒泡,e.preventDefault()
会阻止选择,但不会 防止焦点),或使用树遍历设置每个后代元素(如 the *** answer that first clued me in that this might be possible,或 Tim Down 的 series of nearly identical answers),但实际上您可以设置它在event.target
上mousedown
。
(另外,jQuery 票证:http://bugs.jquery.com/ticket/10345)
【讨论】:
【参考方案2】:我不知道这是否只是一个错字,但你应该使用 e.preventDefault();看起来你缺少括号。
【讨论】:
错字,是的;回答,没有。不过还是谢谢。以上是关于IE - 如果选择框具有特定类,则阻止焦点(单击,双击)的主要内容,如果未能解决你的问题,请参考以下文章
在 IE11 中,当单击其子元素之一时,焦点事件未在具有显示 flex 的可聚焦父 HTML 元素上触发