Javascript 单击“选择”按钮时,停止chrome以显示下拉列表

Javascript 单击“选择”按钮时,停止chrome以显示下拉列表,javascript,google-chrome,Javascript,Google Chrome,我想单击一个,但停止它以显示他的下拉列表 $('select').click(function(){ if ($(this).find('option').size() > 20) { // some code to do my job return false; } }); 代码返回false可以在Firefox中停止下拉列表的显示(实际上,下拉列表先显示,过一会儿再隐藏),但在Chrome中不起作用 我还尝试禁用,在它上面触发blur(

我想单击一个
,但停止它以显示他的下拉列表

$('select').click(function(){
    if ($(this).find('option').size() > 20) {
        // some code to do my job
        return false;
    }
});
代码
返回false
可以在Firefox中停止下拉列表的显示(实际上,下拉列表先显示,过一会儿再隐藏),但在Chrome中不起作用

我还尝试禁用
,在它上面触发
blur()
,或者在其他元素上触发
click()
,但是下拉列表仍然存在,除非用户单击其他地方

这可能吗。。。谢谢


说来话长(如果您对我为什么要这么做感兴趣):

正如您所知,有时会出现一个包含太多内容的
,当您单击它时,会出现一个长的下拉列表 列表在一个长长的下拉列表中找到你需要的是一项糟糕的工作。。。 但不幸的是,我的网站上有很多内容

所以我认为最简单的方法是编写一些javascript来进行更改 当选项大于20时,显示一个带有过滤器和 新的
,只对
进行了筛选,以便于查找

我的问题是下拉列表仍然显示,让我的用户 困惑的他们不知道在哪里操作。“对话框或 原点选择”


问题是
select
元素的默认操作发生在
mousedown
事件上,而不是
click
(或
mouseup
),因此您需要将事件处理程序绑定到
mousedown

$("select").mousedown(function(e) {
    if ($(this).find('option').length > 20) {
        e.preventDefault(); //return false will also work
    }
});

这是一个例子。请注意,我使用了event对象的方法,只是因为我认为这样可以更清楚地了解实际发生的情况。但是,
return false也会起作用。

我想禁用表(id为“details\u table”)中的所有表单控件(使用“form\u control”类),包括选择,并将用户指向打开模式的“edit”按钮。对前面的答案进行了一个小小的调整,似乎可以在Linux上的Firefox和Chrome中使用。尚未在其他浏览器中测试

$('#details_table').on('mousedown', '.form-control', function(e) {
    alert("Please click on the Edit button to modify details.");
    e.preventDefault();
    this.blur();
});

您是否尝试过
.mousedown
并将其设置为禁用或返回函数false?我认为这不起作用,因为您使用的是
。单击
-事件。
鼠标向下
在Chrome中运行良好,但在Firefox中似乎不起作用,有什么建议吗?