2013-04-22 473 views
9

我有一个select元素,如下所示。我想打开它,而无需用户点击它。如何使用jQuery打开select元素

<select id="selId" class="pos_fixed"> 
     <option value="volvo">Option1</option> 
     <option value="saab">Option2</option> 
     <option value="mercedes">Option3</option> 
     <option value="audi">Option4</option> 
    </select> 

请让我知道,如果它可能使用jQuery或JavaScript

+0

可能重复:http://stackoverflow.com/questions/2048213/open-select-using-javascript-jquery – Kenneth 2013-04-22 22:01:07

+0

检查出的http://api.jqueryui .com/selectmenu /#method-open – 2017-08-14 11:30:12

回答

-5

你可以简单地触发单击事件:

jQuery(document).ready(function($) { 
    $('#selId').click(); 
}); 
+3

好的,但没有任何反应。 – RobG 2013-04-22 22:32:01

+0

忘了我完全重建我的选择 – 2013-04-22 22:48:47

-3
$(document).ready(function(){ 
    $('#selId').on('click',function(){ 
    //do stuff here 
    }); 
    $('#selId').trigger('click'); 
}); 

这应该工作。

更新:

$(document).ready(function(){ 
    $('#selId').click(function(){ 
    //do stuff here 
    }); 
    $('#selId').click(); 
}); 

非常相似,对方的回答,但应该做的也相当然后“点击”你可以试试“焦点”

+0

在Firefox或IE中无法正常工作。 – RobG 2013-04-22 22:30:19

+0

好吧,更新答案是一个小清洁。 – 2013-04-22 22:34:58

21

您将一个CSS选择器传递给openSelect()和它会为您打开select元素。

var openSelect = function(selector){ 
    var element = $(selector)[0], worked = false; 
    if (document.createEvent) { // all browsers 
     var e = document.createEvent("MouseEvents"); 
     e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
     worked = element.dispatchEvent(e); 
    } else if (element.fireEvent) { // ie 
     worked = element.fireEvent("onmousedown"); 
    } 
    if (!worked) { // unknown browser/error 
     alert("It didn't worked in your browser."); 
    } 
} 

$(function(){ // when DOM is ready 
    // open .select element 
    openSelect('.select'); 
}); 

这里有一个小提琴:http://jsfiddle.net/Z48wF/1/

来源:How to open the select input using jquery @ stackoverflow.com

+12

只适用于WebKit浏览器(Safari,Chrome)。在Firefox,Opera和IE中不起作用。我只是测试它。 – zengabor 2013-04-22 22:21:52

+1

它在一个月内不会在Chrome中运行:https://www.chromestatus.com/features/57188​​03933560832 – Capsule 2016-08-03 05:14:06

+3

在任何浏览器中都不起作用。 – sajushko 2016-10-13 16:11:42

1

你可以找到一个类似的问题在这里:How can you programmatically tell an HTML SELECT to drop down (for example, due to mouseover)?

我不认为有一个单一的解决方案这可以在每个浏览器中工作。

我可以确认,使用document.createEvent().dispatchEvent()(如上述链接中所述)在WebKit浏览器(Safari,Chrome)中效果很好,但在Firefox,Opera和IE中无效。

但是,您可以尝试组合列出的不同解决方案。

+1

你应该停在第二段。 :-)没有可靠的,跨浏览器的方式来“打开”select元素。 – RobG 2013-04-22 22:29:53

-3

您可以使用下面的脚本

<script> 
    function(){ 
     selectbox = $(select-selector)[0] 
     selectbox.size = selectbox.options.length; 
    } 
</script> 
+1

它没有工作,它打破了布局大声笑。 – 2015-04-15 14:40:47