2010-12-16 153 views
3

Possible en double:
How can you programmatically tell an HTML SELECT to drop down (for example, due to mouseover)?Afficher la liste déroulante sélectionnée dans jQuery?

Est-il possible de faire dans le menu déroulant sur un élément de sélection visible avec jQuery? J'ai essayé d'utiliser $('#dropdown').click();, mais cela n'a aucun effet.

+0

se concentrer peut-être, mais je doute. – RageZ

+0

voir http://stackoverflow.com/questions/2800266/programmatically-open-a-drop-down-menu/2800276#2800276 – sje397

+0

A la vôtre, j'ai essayé de chercher, je suppose que je n'ai pas utilisé les mots justes ... Merci – Hailwood

Répondre

5

Ceci n'est pas possible. Vous pouvez seulement implémenter votre propre boîte de sélection, mais c'est mauvais pour la facilité d'utilisation.

Une autre approche consiste à modifier par programme l'attribut taille de la boîte de sélection, mais ce n'est pas vraiment ce que vous vouliez.

Je suggère de penser à la raison pour laquelle vous en avez besoin et s'il y aurait un meilleur logiciel-modèle?

+2

Il est possible maintenant - juste fireEvent mousedown - résolu ici: http://stackoverflow.com/questions/10453393/how-to-open-the-select- input-using-jquery –

+1

Seulement travaillé dans Chrome pour moi. IE8 ou FF ne fonctionnait pas; il n'est donc toujours pas possible de naviguer dans le navigateur. – 321X

3

Voici mon adaption:

HTML

<button id='btn'>Click Me</button> 
<select id='test'> 
    <option>Blah 1</option> 
    <option>Blah 2</option> 
    <option>Blah 3</option> 
    <option>Blah 4</option> 
</select> 

JavaScript

$('#btn').click(function(){ 
    $('#test').attr('size', 5); 
}); 

$('#test').change(function() { 
    $(this).attr('size', 1); 
}); 

Cela n'ouvre pas la liste déroulante, mais il fonctionne en quelque sorte.

Démo here.

2

Non - vous ne pouvez pas le faire. C'est à peu près les mêmes lignes d'un bouton dans son état enfoncé quand un utilisateur clique dessus - une opération «provisoire» pour l'utilisateur de définir une valeur. Vous pouvez le faire, mais c'est à peu près tout.

Si vous vraiment voulais simuler cela, vous pouvez jouer avec certains CSS. Par exemple, vous pouvez créer une liste qui ressemble à comme la liste déroulante et définir la valeur déroulante en fonction de ce que l'utilisateur clique - similaire à la façon dont une liste de saisie semi-automatique apparaît.

Vous pouvez toujours le remplacer par une zone de liste à plusieurs lignes si vous souhaitez afficher toutes les valeurs pour l'utilisateur. Pour ce faire, définissez size sur n'importe quelle valeur et revenez sur 1 lorsque vous souhaitez masquer. Ce n'est pas parfait, mais il est une autre option:

$("#open").click(function(e){ 
    e.preventDefault(); 
    $("#myselect").attr("size",5);  
}); 

$("#myselect").click(function(){ 
    $(this).attr("size",1); 
}); 

http://jsfiddle.net/jonathon/cr25U/