我正在使用javascript来模拟禁用的select元素。我无法实际禁用它,因为.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错误,还是我需要捕捉其他一些事件?我也试过焦点。
谢谢!
答案 0 :(得分:1)
这已经晚了4年但我刚刚发现实际上有一种方法可以让IE≤8来e.preventDefault()
mousedown
在其他浏览器中做什么(这会阻止选择和< / strong>阻止焦点):设置unselectable
属性! http://jsbin.com/yagekiji/1
请注意,与总是建议的变通方法(总是归结为setTimeout(function() { thingIDidntWantFocusStolenFrom.focus(); })
)不同,这可以防止焦点首先被mousedown
目标所窃取!
有关unselectable
的有趣之处在于它没有被继承,所以它经常被忽视而支持selectstart
事件(气泡和{{ 1}}阻止选择,但不阻止焦点),或者在每个后代元素上设置树遍历(如the StackOverflow answer that first clued me in that this might be possible或Tim Down&#39; s series of nearly identical answers),但您实际上只需在e.preventDefault()
event.target
上设置它。
(另外,jQuery票证:http://bugs.jquery.com/ticket/10345)
答案 1 :(得分:0)
我不知道这只是一个错字,但你应该使用e.preventDefault();看起来你错过了括号。