Jquery 阻止组合框和chrome的默认行为

Jquery 阻止组合框和chrome的默认行为,jquery,google-chrome,focus,blur,Jquery,Google Chrome,Focus,Blur,我想做的是,当点击一个组合框时,列表会打开,但是会弹出一个警报 我有以下代码: $('select').focus(function() { this.blur(); window.focus(); }); $('select').click(function(){ alert('Clicked but did not open'); }); 这在FF中很好,但在chrome中不起作用 知道为什么吗 提前谢谢你 添加return false works为了防止事

我想做的是,当点击一个组合框时,列表会打开,但是会弹出一个警报

我有以下代码:

$('select').focus(function() {
    this.blur();
    window.focus();
});   

$('select').click(function(){
    alert('Clicked but did not open');
});
这在FF中很好,但在chrome中不起作用

知道为什么吗

提前谢谢你


添加return false works

为了防止事件冒泡,您应该使用跨浏览器兼容性

$('select').mousedown(function(e) {
    this.blur();
    window.focus();
    e.preventDefault();
});

适用于Chrome、IE 9(不是8)和Opera(至少是我安装的11.61版)。它在Firefox中不起作用,不知道为什么。然而,无论是鼠标向下还是单击,元素上的模糊和窗口上的焦点对我来说都不起作用

受到了两次被否决的答案的启发(http://stackoverflow.com/questions/1905464/html-select-dropdown),我想出了一个小小的变化(原版让整个窗口闪烁,有点可怕):

现在,对于FF(我有版本10)和IE<9,这意味着会有轻微的闪烁,因为下拉菜单实际上会在之后立即打开或关闭,但preventDefault是为了让它在其他所有现代浏览器中都能正常工作。选择是邪恶的,我不认为有一个好的跨浏览器的方式来控制是否显示下拉列表。Return false应该根据互联网上的传言做些什么,所以我把它放在那里了,可能它在旧的浏览器中也能工作


附言:在你的问题中,你的意思是“[…]列表不应该打开,而是[…]”,对吗?

谢谢你,现在它在chrome中工作,但在FF中不工作。。。任何想法???@Ovi尝试点击事件(见新的演示)我只有FF 5。。。idk如何在第4章中测试:(是的,它确实有:(当你尝试它时,到底会发生什么?好的,现在它在FF中工作,但在chrome中,列表打开了,同样的问题从一开始就出现了。),你的演示很好,因为它打开列表然后立即关闭,在我的网站上它打开并保持…没关系。只是e.preventDefault()本身在Firefox(21.0)中工作。只有当我在mousedown处理程序中调用focus()时,它才打开选择。。。
$('select').mousedown(function(e) {
    this.blur();
    window.focus();
    e.preventDefault();
});
$('select').mousedown(function(e) {
    e.preventDefault();
});
$('select').mousedown(function(event) { 
   var $select = this;
   window.setTimeout(function () {          
      $select.blur();
      $select.focus();
      //do whatever like alert("This message");
   },0);        
   event.preventDefault();
   return false;
});