2013-04-22 475 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