¿Es posible utilizar JS para abrir una selección HTML y mostrar su lista de opciones? [duplicar]

Resuelto Darryl Hein asked hace 15 años • 10 respuestas

¿Es posible utilizar JavaScript para abrir una selección HTML y mostrar su lista de opciones?

Darryl Hein avatar Jan 10 '09 07:01 Darryl Hein
Aceptado

Desafortunadamente hay una respuesta simple a esta pregunta y es "No".

Gareth avatar Jan 10 '2009 00:01 Gareth

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.

Phil avatar Sep 28 '2009 21:09 Phil

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.

Jason de Belle avatar Oct 09 '2009 18:10 Jason de Belle

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);
};
Valentin Borisov avatar Jan 03 '2014 15:01 Valentin Borisov

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 triggerand mousedownor only mousedownpero sin éxito.

Asaf David avatar May 09 '2016 12:05 Asaf David