¿Es posible utilizar JS para abrir una selección HTML y mostrar su lista de opciones? [duplicar]
¿Es posible utilizar JavaScript para abrir una selección HTML y mostrar su lista de opciones?
Desafortunadamente hay una respuesta simple a esta pregunta y es "No".
Tuve este problema... y encontré una solución viable.
No quería que se mostrara el cuadro de selección hasta que el usuario hiciera clic en HTML simple. Entonces superpuse el elemento seleccionado con opacity=.01
. Al hacer clic, lo cambié de nuevo a opacity=100
. Esto me permitió ocultar la selección, y cuando el usuario hizo clic en el texto, apareció la selección con las opciones mostradas.
Yo uso esto... pero requiere que el usuario haga clic en el cuadro de selección...
Aquí están las 2 funciones de JavaScript.
function expand(obj)
{
obj.size = 5;
}
function unexpand(obj)
{
obj.size = 1;
}
luego creo el cuadro de selección
<select id="test" multiple="multiple" name="foo" onFocus="expand(this)" onBlur="unexpand(this)">
<option >option1</option>
<option >option2</option>
<option >option3</option>
<option >option4</option>
<option >option5</option>
</select>
Sé que este código llega un poco tarde, pero espero que ayude a alguien que haya tenido el mismo problema que yo.
PD/para tu información, no he probado el código anterior (creo mi cuadro de selección dinámicamente) y el código que escribí solo se probó en FireFox.
Esto funciona en Google Chrome
dropDown = function (elementId) {
var dropdown = document.getElementById(elementId);
try {
showDropdown(dropdown);
} catch(e) {
}
return false;
};
showDropdown = function (element) {
var event;
event = document.createEvent('MouseEvents');
event.initMouseEvent('mousedown', true, true, window);
element.dispatchEvent(event);
};
Después de intentar resolver este problema durante algún tiempo, logré encontrar una solución funcional que también es válida:
var event = new MouseEvent('mousedown');
element.dispatchEvent(event);
También intenté implementar esto en Jquery, usando trigger
and mousedown
or only mousedown
pero sin éxito.