2013-04-22 9 views
9

Mam element wyboru w następujący sposób. Chcę go otworzyć bez konieczności klikania przez użytkownika.Jak otworzyć wybrany element za pomocą jquery

<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> 

Proszę dać mi znać, jeśli jego możliwości za pomocą jQuery lub javascript

+0

Możliwy duplikat: http://stackoverflow.com/questions/2048213/open-select-using-javascript-jquery – Kenneth

+0

sprawdzić http: //api.jqueryui .com/selectmenu/# method-open –

Odpowiedz

-5

można po prostu wywołać zdarzenie click:

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

Oczywiście, ale nic się nie dzieje. – RobG

+0

zapomniałem, że całkowicie odbudowuję moje wybory –

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

to powinno działać.

Aktualizacja:

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

Bardzo podobne do innych odpowiedzi, ale że powinien to zrobić również, a następnie "kliknięcie" można spróbować "Focus"

+0

Nie działa w przeglądarce Firefox lub IE. – RobG

+0

ok, zaktualizowałem odpowiedź, aby była trochę czystsza. –

21

Zdasz selektora CSS openSelect() i Otworzy się element 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'); 
}); 

Oto skrzypce: http://jsfiddle.net/Z48wF/1/

Źródło: How to open the select input using jquery @ stackoverflow.com

+12

Działa tylko w przeglądarkach WebKit (Safari, Chrome). Nie działa w przeglądarkach Firefox, Opera i IE. Właśnie to przetestowałem. – zengabor

+1

Nie będzie już działać w Chrome ani w ciągu miesiąca: https://www.chromestatus.com/features/5718803933560832 – Capsule

+3

Nie działa już w żadnej przeglądarce. – sajushko

1

Można znaleźć podobne pytanie tutaj: How can you programmatically tell an HTML SELECT to drop down (for example, due to mouseover)?

I nie sądzę, że istnieje jedno rozwiązanie który działałby w każdej przeglądarce.

Mogę potwierdzić, że używanie document.createEvent() i .dispatchEvent() (jak wyjaśniono na powyższym linku) działa świetnie w przeglądarkach WebKit (Safari, Chrome), ale nie w Firefoksie, Operze i IE.

Można jednak spróbować połączyć różne wymienione tam rozwiązania.

+1

Powinieneś był przestać w drugim akapicie. :-) Nie istnieje żaden niezawodny, oparty na przeglądarce sposób, aby "otworzyć" wybrany element. – RobG

-3

Można użyć następującego skryptu

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

to nie działa i to złamało układ lol. –

Powiązane problemy