2012-02-29 38 views
0

当用户点击选择框时,我想通过在选择框上点击模糊事件来隐藏选项菜单。以下代码适用于Firefox,但不适用于Chrome。模糊关闭选择框不适用于铬?

<select id="myselect" name="city"> 
       <option value="default" id="first">Default value</option> 
      </select> 



     <script type="text/javascript"> 

      $('#myselect').click(function(){ 
       $(this).blur(); 

      }); 

     </script> 

在铬选项菜单保持原样。

+0

所以你想关闭用户刚刚打开的下拉列表? – Tx3 2012-02-29 12:52:30

+0

@ Tx3是的,先生... – 2012-02-29 12:57:23

+0

只是好奇,为什么你不只是禁用它? – Tx3 2012-02-29 13:12:53

回答

0

这是我对我的问题

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; 
     if(is_chrome) $(".option").hide(); 

其中类“选项”代表选择框中的所有选项的黑客。

0

我怀疑这与用户模式状态有关(尽管我找不到任何文档来支持它,我可能会添加)。我怀疑任何事件侦听器都会被忽略,直到用户从选项中进行选择。

为了支持这一点,你可以看到,$(this).blur()火灾时,我们把它挂到onchange事件<select>的准确预期: http://jsfiddle.net/TkfPN/

这将是更好的选择简单地禁用<select>元素。模糊聚焦元素是非常糟糕的人机交互和令人沮丧的用户。

0

我找到了解决方案。只需删除选择框的节点,然后将其添加回来!确保你使用委托事件处理程序。似乎适用于所有浏览器。这里是我在jQuery中的解决方案,但如果有人想写一个纯粹的JS解决方案,那也会很好。

jQuery('.sortSelect').appendTo('.sortParent'); 

如果不是appearant,在这个例子中,标记工作,如果sortSelect是sortParent的最后一个直接子。 $ .insertAfter()/ $。insertBefore()也可以。