2013-04-22 12 views
9

Ho un elemento select come segue. voglio aprirlo senza che l'utente debba cliccarci sopra.Come aprire select elemento usando 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> 

Per favore fatemi sapere se possibile, utilizzando jQuery o JavaScript

+0

Eventuali duplicati: http://stackoverflow.com/questions/2048213/open-select-using-javascript-jquery – Kenneth

+0

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

risposta

-5

si può semplicemente attivare l'evento click:

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

Certo, ma non succede nulla. – RobG

+0

ho dimenticato di ricostruire completamente i miei contatti –

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

Questo dovrebbe funzionare.

Aggiornamento:

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

Molto simile al altra risposta, ma che dovrebbe farlo anche piuttosto allora "click" si può provare "focus"

+0

Non funziona in Firefox o IE. – RobG

+0

ok, ha aggiornato la risposta per essere un po 'più pulito. –

21

Passerete un selettore CSS per openSelect() e aprirà l'elemento select per te.

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'); 
}); 

Ecco un violino: http://jsfiddle.net/Z48wF/1/

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

+12

Funziona solo con i browser WebKit (Safari, Chrome). Non funziona in Firefox, Opera e IE. L'ho appena provato – zengabor

+1

E non funzionerà più in Chrome in un mese: https://www.chromestatus.com/features/5718803933560832 – Capsule

+3

Non funziona più in nessun browser. – sajushko

1

È possibile trovare una domanda simile qui: How can you programmatically tell an HTML SELECT to drop down (for example, due to mouseover)?

Io non credo che ci sia una soluzione unica funzionerebbe in tutti i browser.

Posso confermare che l'utilizzo di document.createEvent() e .dispatchEvent() (come spiegato nel link sopra) funziona perfettamente nei browser WebKit (Safari, Chrome) ma non in Firefox, Opera e IE.

Tuttavia, puoi provare a combinare le diverse soluzioni elencate qui.

+1

Dovresti esserti fermato al secondo paragrafo. :-) Non esiste un modo affidabile per browser di "aprire" un elemento select. – RobG

0

Ho una soluzione completa per questo problema qui Is it possible to use JS to open an HTML select to show its option list?. In questo schema la selezione può essere aperta correttamente, facile, con tutte le sue funzionalità e preservando il layout della pagina. Questa soluzione è sicura, semplice e compatibile con Internet Explorer, FireFox e Chrome.

Grazie!

-3

È possibile utilizzare il seguente script

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

non ha funzionato e ha rotto il layout lol. –

Problemi correlati