IE - 如果具有特定类,则禁止在选择框上对焦(单击,双击)

时间:2010-02-10 18:35:44

标签: javascript jquery internet-explorer

我正在使用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错误,还是我需要捕捉其他一些事件?我也试过焦点。

谢谢!

2 个答案:

答案 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();看起来你错过了括号。