Можно ли использовать JS, чтобы открыть HTML-выбор, чтобы отобразить его список параметров?

Можно ли использовать JavaScript, чтобы открыть HTML-выбор, чтобы отобразить его список параметров?


person Darryl Hein    schedule 10.01.2009    source источник
comment
Зачем, кстати, нужна эта функциональность? Просто любопытно...   -  person Shivasubramanian A    schedule 10.01.2009
comment
Одна из причин, по которой это было бы хорошо, - поддержка сочетаний клавиш (что в наши дни делают многие сайты, например Twitter, GitHub, G +).   -  person mahemoff    schedule 03.07.2012
comment
Вы можете использовать клавиатуру, чтобы уже открывать выбранные поля. Обычно (это зависит от вашего браузера) вы переходите к полю, а затем нажимаете стрелку вниз или вверх, чтобы открыть выбор и прокрутить параметры.   -  person Darryl Hein    schedule 09.07.2012
comment
@DarrylHein, стрелки вверх и вниз не работают для моего раскрывающегося списка в моей таблице данных .... Я бы хотел, чтобы они сделали, я пытался назначить стрелки функции, если функция существовала ...   -  person user2847749    schedule 25.07.2014


Ответы (10)


К сожалению, на этот вопрос есть простой ответ - «Нет».

person Gareth    schedule 10.01.2009
comment
уверен в этом? - person Christoph; 10.01.2009
comment
Невозможно сделать (с обычным html / javascript) - person scunliffe; 10.01.2009
comment
Я также хотел бы, чтобы я мог программно открыть выбор для пользователей клавиатуры. В Firefox событие изменения не срабатывает до тех пор, пока выбор не потеряет фокус, а если меню на самом деле не открыто, оно ничего не выбирает при переходе на вкладку. LAME-O! - person Marcy Sutton; 09.12.2010
comment
это неправильный ответ на этот вопрос, следующая ссылка даст вам ответ stackoverflow.com/questions/249192/ - person user2988855; 08.08.2015
comment
Технически это правильный ответ, это невозможно. Но если вы хотите, чтобы вам казалось, что вы уже посмотрели на ответ ниже: stackoverflow.com/a/1489537/151503 - person Redzarf; 09.11.2015
comment
проверьте здесь jsfiddle.net/oscarj24/GR9jU рабочий пример - person Amit; 01.03.2016
comment
@Amit не работает в FF - person Fanky; 10.01.2017
comment
@Amit не работает (больше) в Chrome (с использованием v55) - person HammerNL; 20.01.2017
comment
Точнее всего сказать, что среди всех основных браузеров нет хорошо поддерживаемого метода (по состоянию на 19.04.2017). @Asaf David действительно предоставил метод, который работает в FireFox, поэтому он явно возможен в незначительном количестве вариантов использования. - person rainabba; 20.04.2017
comment
Спасибо за TL; DR :) - person IonicBurger; 24.05.2018
comment
Вы знаете какой-либо контекст вокруг этого? Это запрещено по соображениям безопасности? Не удалось ли объединить стандарт для его реализации? Это технически невозможно из-за каких-то непонятных технических ограничений? Другими словами, просто почему? - person Mattias Martens; 07.10.2019
comment
Бесполезный ответ без каких-либо объяснений. - person ChrisN; 08.09.2020

У меня была эта проблема ... и я нашел работоспособное решение.

Я не хотел, чтобы поле выбора отображалось, пока пользователь не щелкнет какой-нибудь простой HTML. Поэтому я наложил на выбранный элемент opacity=.01. После нажатия я снова изменил его на opacity=100. Это позволило мне скрыть выбор, и когда пользователь щелкнул текст, появился выбор с отображаемыми параметрами.

person Phil    schedule 28.09.2009
comment
Разве это не просто скрытие / отображение фактического поля выбора? Вопрос в том, чтобы показать / открыть список опций. - person Darryl Hein; 29.09.2009
comment
Мой метод показывает / открывает список параметров вместе с самим полем выбора. Единственный способ открыть список опций - щелкнуть поле выбора. Этого я добился, невидимо наложив выделение поверх некоторого целевого текста. - person Phil; 29.09.2009
comment
Это было единственное решение, способное стилизовать кнопку меню выбора в глючном WebView Android. Спасибо! - person Riplexus; 16.06.2013
comment
Спасибо, искал пару часов. Это должен быть принятый ответ! - person avb; 10.07.2014
comment
Это не отвечает на вопрос, но ДЕЙСТВИТЕЛЬНО представляет собой обходной путь для случая, когда вы хотите стилизовать элемент ‹select›, сохраняя при этом собственный элемент управления, что является причиной, по которой вы можете захотеть открыть раскрывающееся меню с помощью js. . Если вы установите непрозрачность ‹select› на 0, когда пользователь щелкает невидимый выбор, выпадающий список параметров будет отображаться как обычно. - person Chris Snyder; 21.07.2015
comment
Фил или @ChrisSnyder, было бы неплохо предоставить рабочий jsfiddle. Кроме того, должен ли пользователь на самом деле щелкать (я полагаю, что большинство читателей здесь хотят избежать) или это может быть смоделировано / инициировано другим событием? Моя цель состоит в том, чтобы выпадающее меню увеличивалось - сразу же показывало его эффект - после выбора строки Показать дополнительные параметры ... в конце списка. - person Jon Coombs; 13.12.2016
comment
да, я не уверен, как это решает исходный вопрос, можете ли вы предоставить образец кода? Спасибо! - person Quang Van; 10.12.2018
comment
Это прекрасно работает на мобильных устройствах; намного лучше, чем стандартный выпадающий список каменного века. Я использовал полноэкранный div для элемента подложки, поместил внутри него полноэкранное изображение, добавил заголовок с абсолютным позиционированием, затем наложил выбор поверх этого, также с абсолютным позиционированием и 100% шириной / высотой, чтобы пользователь мог нажмите в любом месте на нем. Список всплывает над изображением. Очень приятно. - person Graham; 20.04.2020

Я использую это ... но для этого требуется, чтобы пользователь щелкнул поле выбора ...

Вот 2 функции javascript

function expand(obj)
{
    obj.size = 5;
}
function unexpand(obj)
{
    obj.size = 1;
}

затем я создаю поле выбора

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

Я знаю, что этот код немного запоздал, но надеюсь, что он поможет кому-то, у кого была такая же проблема, как и у меня.

ps / fyi я не тестировал приведенный выше код (я создаю свое поле выбора динамически), а код, который я написал, был протестирован только в FireFox.

person Jason de Belle    schedule 09.10.2009
comment
+1, делал аналогичные вещи раньше, я полагаю, я также установил его положение в абсолютное значение, когда он был развернут, чтобы он не нарушал поток документов, и обратно в блок, когда он был свернут. - person CaffGeek; 09.10.2009
comment
Привет, спасибо, Чад! Ваши комментарии помогли мне решить проблему! Хотел бы я поставить +1 вам в ответ;) - person Jason de Belle; 09.10.2009
comment
В моем случае это не решило бы проблему точно, но это был бы вариант. +1 - person Darryl Hein; 10.10.2009
comment
@DarrylHein: В данном случае это не просто вариант, это 5 <option>s ... - person awe; 07.06.2013
comment
очень хитро, спасибо. - person Dan Ochiana; 11.05.2017

Это работает в 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);
};
person Valentin Borisov    schedule 03.01.2014
comment
К вашему сведению: у меня это сработало в Chrome 35.0.1916.153. Убедитесь, что вы передаете фактический элемент, а не объект jQuery. - person ShawnFumo; 03.07.2014
comment
Это работает и в последней версии Opera на основе Chromium. - person NoOne; 25.04.2015
comment
К сожалению, сейчас он устарел в Chrome 53+ - person Washington Guedes; 27.09.2016
comment
У меня это не сработало на ПК / Mac, но оно работает на мобильных устройствах (и вам также нужно добавить событие mouseup). - person EvgenyKolyakov; 25.02.2017
comment
Не работает с Chrome 59 в Windows. - person rainabba; 20.04.2017
comment
больше не работает на хроме. все еще работаю над сафари. - person Moshe Simantov; 19.05.2020
comment
это больше не будет работать. Невозможно отправить событие нажатия мыши выбранному элементу. - person user3335999; 13.11.2020

Это очень поздно, но я подумал, что это может быть полезно для кого-то, если они обратятся к этому вопросу. Я верю, что приведенный ниже JS сделает то, о чем просят.

<script>     
         $(document).ready(function()
           {
          document.getElementById('select').size=3;
           });
    </script> 
person Rhys    schedule 24.10.2012
comment
Немного отличается, потому что это приведет к корректировке фактического размера выделенного фрагмента, а не отображения всех выбранных значений. Если у вас есть только 3 варианта, как в вашем примере, то будут показаны все они, но также будет изменен макет вашей страницы. - person Darryl Hein; 05.11.2012
comment
~ Рис, спасибо! это привело меня к большему количеству идей. Попробуйте, он будет установлен на точную высоту, необходимую для элементов управления выбора. $ (выберите: видимый) .each (функция (i, e) {e.size = e.length;}); - person Sabo; 03.06.2013
comment
Не хорошая идея. Установка размера для элемента выбора изменяет его из раскрывающегося списка в список (используя терминологию элементов управления Windows). Проблемы, которые возникают при этом, заключаются в том, что вам нужно следить за раскрывающимся списком, включая размещение (он не всплывает над страницей, как настоящий раскрывающийся список), закрытие (если пользователь щелкает в другом месте, список остается видимым). Я потратил много времени на игры с размером. Мобильное сафари все равно игнорирует это. - person axeman; 14.04.2015

Я почти уверен, что ответ: нет. Вы можете выбирать параметры с помощью JavaScript, но не открывать выбор. Вам нужно будет использовать индивидуальное решение.

person Eric Wendelin    schedule 10.01.2009

Предлагаемое мной решение безопасно, просто и совместимо с Internet Explorer, FireFox и Chrome.

Этот подход новый и законченный. Я не нашел ничего равного этому решению в Интернете. Простой, кроссбраузерный (Internet Explorer, Chrome и Firefox), сохраняет макет, использует сам выбор и прост в использовании.

Примечание: требуется JQuery.

КОД HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CustonSelect</title>
<script type="text/javascript" src="./jquery-1.3.2.js"></script>
<script type="text/javascript" src="./CustomSelect.js"></script>
</head>
<div id="testDiv"></div>
<body>
    <table>
        <tr>
            <td>
                <select id="Select0" >
                    <option value="0000">0000</option>
                    <option value="0001">0001</option>
                    <option value="0002">0002</option>
                    <option value="0003">0003</option>
                    <option value="0004">0004</option>
                    <option value="0005">0005</option>
                    <option value="0006">0006</option>
                    <option value="0007">0007</option>
                    <option value="0008">0008</option>
                    <option value="0009">0009</option>
                    <option value="0010">0010</option>
                    <option value="0011">0011</option>
                    <option value="0012">0012</option>
                    <option value="0013">0013</option>
                    <option value="0014">0014</option>
                    <option value="0015">0015</option>
                    <option value="0016">0016</option>
                    <option value="0017">0017</option>
                    <option value="0018">0018</option>
                    <option value="0019">0019</option>
                    <option value="0020">0020</option>
                    <option value="0021">0021</option>
                    <option value="0022">0022</option>
                    <option value="0023">0023</option>
                    <option value="0024">0024</option>
                    <option value="0025">0025</option>
                    <option value="0026">0026</option>
                    <option value="0027">0027</option>
                    <option value="0028">0028</option>
                    <option value="0029">0029</option>
                    <option value="0030">0030</option>
                    <option value="0031">0031</option>
                    <option value="0032">0032</option>
                    <option value="0033">0033</option>
                    <option value="0034">0034</option>
                    <option value="0035">0035</option>
                    <option value="0036">0036</option>
                    <option value="0037">0037</option>
                    <option value="0038">0038</option>
                    <option value="0039">0039</option>
                    <option value="0040">0040</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>
                <select id="Select1" >
                    <option value="0000">0000</option>
                    <option value="0001">0001</option>
                    <option value="0002">0002</option>
                    <option value="0003">0003</option>
                    <option value="0004">0004</option>
                    <option value="0005">0005</option>
                    <option value="0006">0006</option>
                    <option value="0007">0007</option>
                    <option value="0008">0008</option>
                    <option value="0009">0009</option>
                    <option value="0010">0010</option>
                    <option value="0011">0011</option>
                    <option value="0012">0012</option>
                    <option value="0013">0013</option>
                    <option value="0014">0014</option>
                    <option value="0015">0015</option>
                    <option value="0016">0016</option>
                    <option value="0017">0017</option>
                    <option value="0018">0018</option>
                    <option value="0019">0019</option>
                    <option value="0020">0020</option>
                    <option value="0021">0021</option>
                    <option value="0022">0022</option>
                    <option value="0023">0023</option>
                    <option value="0024">0024</option>
                    <option value="0025">0025</option>
                    <option value="0026">0026</option>
                    <option value="0027">0027</option>
                    <option value="0028">0028</option>
                    <option value="0029">0029</option>
                    <option value="0030">0030</option>
                    <option value="0031">0031</option>
                    <option value="0032">0032</option>
                    <option value="0033">0033</option>
                    <option value="0034">0034</option>
                    <option value="0035">0035</option>
                    <option value="0036">0036</option>
                    <option value="0037">0037</option>
                    <option value="0038">0038</option>
                    <option value="0039">0039</option>
                    <option value="0040">0040</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>
                <select id="Select2" >
                    <option value="0000">0000</option>
                    <option value="0001">0001</option>
                    <option value="0002">0002</option>
                    <option value="0003">0003</option>
                    <option value="0004">0004</option>
                    <option value="0005">0005</option>
                    <option value="0006">0006</option>
                    <option value="0007">0007</option>
                    <option value="0008">0008</option>
                    <option value="0009">0009</option>
                    <option value="0010">0010</option>
                    <option value="0011">0011</option>
                    <option value="0012">0012</option>
                    <option value="0013">0013</option>
                    <option value="0014">0014</option>
                    <option value="0015">0015</option>
                    <option value="0016">0016</option>
                    <option value="0017">0017</option>
                    <option value="0018">0018</option>
                    <option value="0019">0019</option>
                    <option value="0020">0020</option>
                    <option value="0021">0021</option>
                    <option value="0022">0022</option>
                    <option value="0023">0023</option>
                    <option value="0024">0024</option>
                    <option value="0025">0025</option>
                    <option value="0026">0026</option>
                    <option value="0027">0027</option>
                    <option value="0028">0028</option>
                    <option value="0029">0029</option>
                    <option value="0030">0030</option>
                    <option value="0031">0031</option>
                    <option value="0032">0032</option>
                    <option value="0033">0033</option>
                    <option value="0034">0034</option>
                    <option value="0035">0035</option>
                    <option value="0036">0036</option>
                    <option value="0037">0037</option>
                    <option value="0038">0038</option>
                    <option value="0039">0039</option>
                    <option value="0040">0040</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>
                <select id="Select3" >
                    <option value="0000">0000</option>
                    <option value="0001">0001</option>
                    <option value="0002">0002</option>
                    <option value="0003">0003</option>
                    <option value="0004">0004</option>
                    <option value="0005">0005</option>
                    <option value="0006">0006</option>
                    <option value="0007">0007</option>
                    <option value="0008">0008</option>
                    <option value="0009">0009</option>
                    <option value="0010">0010</option>
                    <option value="0011">0011</option>
                    <option value="0012">0012</option>
                    <option value="0013">0013</option>
                    <option value="0014">0014</option>
                    <option value="0015">0015</option>
                    <option value="0016">0016</option>
                    <option value="0017">0017</option>
                    <option value="0018">0018</option>
                    <option value="0019">0019</option>
                    <option value="0020">0020</option>
                    <option value="0021">0021</option>
                    <option value="0022">0022</option>
                    <option value="0023">0023</option>
                    <option value="0024">0024</option>
                    <option value="0025">0025</option>
                    <option value="0026">0026</option>
                    <option value="0027">0027</option>
                    <option value="0028">0028</option>
                    <option value="0029">0029</option>
                    <option value="0030">0030</option>
                    <option value="0031">0031</option>
                    <option value="0032">0032</option>
                    <option value="0033">0033</option>
                    <option value="0034">0034</option>
                    <option value="0035">0035</option>
                    <option value="0036">0036</option>
                    <option value="0037">0037</option>
                    <option value="0038">0038</option>
                    <option value="0039">0039</option>
                    <option value="0040">0040</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>
                <select id="Select4" >
                    <option value="0000">0000</option>
                    <option value="0001">0001</option>
                    <option value="0002">0002</option>
                    <option value="0003">0003</option>
                    <option value="0004">0004</option>
                    <option value="0005">0005</option>
                    <option value="0006">0006</option>
                    <option value="0007">0007</option>
                    <option value="0008">0008</option>
                    <option value="0009">0009</option>
                    <option value="0010">0010</option>
                    <option value="0011">0011</option>
                    <option value="0012">0012</option>
                    <option value="0013">0013</option>
                    <option value="0014">0014</option>
                    <option value="0015">0015</option>
                    <option value="0016">0016</option>
                    <option value="0017">0017</option>
                    <option value="0018">0018</option>
                    <option value="0019">0019</option>
                    <option value="0020">0020</option>
                    <option value="0021">0021</option>
                    <option value="0022">0022</option>
                    <option value="0023">0023</option>
                    <option value="0024">0024</option>
                    <option value="0025">0025</option>
                    <option value="0026">0026</option>
                    <option value="0027">0027</option>
                    <option value="0028">0028</option>
                    <option value="0029">0029</option>
                    <option value="0030">0030</option>
                    <option value="0031">0031</option>
                    <option value="0032">0032</option>
                    <option value="0033">0033</option>
                    <option value="0034">0034</option>
                    <option value="0035">0035</option>
                    <option value="0036">0036</option>
                    <option value="0037">0037</option>
                    <option value="0038">0038</option>
                    <option value="0039">0039</option>
                    <option value="0040">0040</option>
                </select>
            </td>
        </tr>
    </table>
    <input type="button" id="Button0" value="MoveLayout!"/>
</body>
</html>

КОД JAVASCRIPT

var customSelectFields = new Array();


// Note: The list of selects to be modified! By Questor
customSelectFields[0] = "Select0";
customSelectFields[1] = "Select1";
customSelectFields[2] = "Select2";
customSelectFields[3] = "Select3";
customSelectFields[4] = "Select4";

$(document).ready(function()
{


    //Note: To debug! By Questor
    $("#Button0").click(function(event){ AddTestDiv(); });

    StartUpCustomSelect(null);  

});


//Note: To test! By Questor
function AddTestDiv()
{
    $("#testDiv").append("<div style=\"width:100px;height:100px;\"></div>");
}


//Note: Startup selects customization scheme! By Questor
function StartUpCustomSelect(what)
{

    for (i = 0; i < customSelectFields.length; i++)
    {

        $("#" + customSelectFields[i] + "").click(function(event){ UpCustomSelect(this); });
        $("#" + customSelectFields[i] + "").wrap("<div id=\"selectDiv_" + customSelectFields[i] + "\" onmouseover=\"BlockCustomSelectAgain();\" status=\"CLOSED\"></div>").parent().after("<div id=\"coverSelectDiv_" + customSelectFields[i] + "\" onclick=\"UpOrDownCustomSelect(this);\" onmouseover=\"BlockCustomSelectAgain();\"></div>");


        //Note: Avoid breaking the layout when the CSS is modified from "position" to "absolute" on the select! By Questor
        $("#" + customSelectFields[i] + "").parent().css({'width': $("#" + customSelectFields[i] + "")[0].offsetWidth + 'px', 'height': $("#" + customSelectFields[i] + "")[0].offsetHeight + 'px'});

        BlockCustomSelect($("#" + customSelectFields[i] + ""));

    }
}


//Note: Repositions the div that covers the select using the "onmouseover" event so 
//Note: if element on the screen move the div always stand over it (recalculate! By Questor
function BlockCustomSelectAgain(what)
{
    for (i = 0; i < customSelectFields.length; i++)
    {
        if($("#" + customSelectFields[i] + "").parent().attr("status") == "CLOSED")
        {
            BlockCustomSelect($("#" + customSelectFields[i] + ""));
        }
    }
}


//Note: Does not allow the select to be clicked or clickable! By Questor
function BlockCustomSelect(what)
{

    var coverSelectDiv = $(what).parent().next();


    //Note: Ensures the integrity of the div style! By Questor
    $(coverSelectDiv).removeAttr('style');


    //Note: To resolve compatibility issues! By Questor
    var backgroundValue = "";
    var filerValue = "";
    if(navigator.appName == "Microsoft Internet Explorer")
    {
        backgroundValue = 'url(fakeimage)';
        filerValue = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=\'scale\', src=\'fakeimage\' )';
    }


    //Note: To debug! By Questor
    //'border': '5px #000 solid',

    $(coverSelectDiv).css({
        'position': 'absolute', 
        'top': $(what).offset().top + 'px', 
        'left': $(what).offset().left + 'px', 
        'width': $(what)[0].offsetWidth + 'px', 
        'height': $(what)[0].offsetHeight + 'px', 
        'background': backgroundValue,
        '-moz-background-size':'cover',
        '-webkit-background-size':'cover',
        'background-size':'cover',
        'filer': filerValue
    });

}


//Note: Allow the select to be clicked or clickable! By Questor
function ReleaseCustomSelect(what)
{

    var coverSelectDiv = $(what).parent().next();

    $(coverSelectDiv).removeAttr('style');
    $(coverSelectDiv).css({'display': 'none'});

}


//Note: Open the select! By Questor
function DownCustomSelect(what)
{


    //Note: Avoid breaking the layout. Avoid that select events be overwritten by the others! By Questor
    $(what).css({
        'position': 'absolute', 
        'z-index': '100'
    });


    //Note: Open dropdown! By Questor
    $(what).attr("size","10");

    ReleaseCustomSelect(what);


    //Note: Avoids the side-effect of the select loses focus.! By Questor
    $(what).focus();


    //Note: Allows you to select elements using the enter key when the select is on focus! By Questor
    $(what).keyup(function(e){
        if(e.keyCode == 13)
        {
            UpCustomSelect(what);
        }
    });


    //Note: Closes the select when loses focus! By Questor
    $(what).blur(function(e){
        UpCustomSelect(what);
    });

    $(what).parent().attr("status", "OPENED");

}


//Note: Close the select! By Questor
function UpCustomSelect(what)
{

    $(what).css("position","static");


    //Note: Close dropdown! By Questor
    $(what).attr("size","1");

    BlockCustomSelect(what);

    $(what).parent().attr("status", "CLOSED");

}


//Note: Closes or opens the select depending on the current status! By Questor
function UpOrDownCustomSelect(what)
{

    var customizedSelect = $($(what).prev().children()[0]);

    if($(what).prev().attr("status") == "CLOSED")
    {
        DownCustomSelect(customizedSelect);
    }
    else if($(what).prev().attr("status") == "OPENED")
    {
        UpCustomSelect(customizedSelect);
    }

}
person Eduardo Lucio    schedule 23.01.2014
comment
Я создал jsfiddle с этим, и он, похоже, не работает ... jsfiddle.net/rL53xj11 - person mix3d; 30.09.2015
comment
У меня тоже не сработало. - person Jon Coombs; 13.12.2016
comment
@JonCoombs Да, работает. У меня есть клиентское приложение, в котором это решение работает отлично. Однако учтите, что этому коду уже 2 года. Я рекомендую самостоятельно протестировать html-файл на вашем локальном компьютере. Также обратите внимание на версию вашего jquery. - person Eduardo Lucio; 16.12.2016
comment
@EduardoLucio Можете ли вы преобразовать это в пример кода здесь? - person 1.21 gigawatts; 15.07.2019
comment
@ 1.21gigawatts Вернитесь к основному = D! Создайте папку. Загрузите jquery-1.3.2.js code.jquery.com/jquery-1.3.2 .js, создав файл (my.htm) с содержимым HTML CODE и файл (CustomSelect.js) с содержимым JAVASCRIPT CODE. Поместите все в созданную вами папку. Дважды щелкните my.htm, чтобы открыть его в браузере. Сделанный! Спасибо! = D - person Eduardo Lucio; 16.07.2019

Пытаясь решить эту проблему в течение некоторого времени, мне удалось найти рабочее решение, которое также действует:

var event = new MouseEvent('mousedown');
element.dispatchEvent(event);

Я также пытался реализовать это в JQuery, используя trigger и mousedown или только mousedown, но безуспешно.

person Asaf David    schedule 09.05.2016
comment
Похоже, это не работает в Firefox 50. - person Mathieu Bridon; 13.01.2017
comment
Не работает с Chrome 59 в Windows. Хотя работает с FireFox 51 в Windows. - person rainabba; 20.04.2017

<select id="myDropDown">
  <option>html5</option>
  <option>javascript</option>
  <option>jquery</option>
  <option>css</option>
  <option>sencha</option>
</select>

По jQuery:

var myDropDown=$("#myDropDown");
var length = $('#myDropDown> option').length;
//open dropdown
myDropDown.attr('size',length);
//close dropdown
myDropDown.attr('size',0);

По javascript:

var myDropDown=document.getElementById("myDropDown");
var length = myDropDown.options.length;
//open dropdown
myDropDown.size = length;
//close dropdown
myDropDown.size = 0;

Скопировано с: Открыть закрыть выбрать

person Syed Nasir Abbas    schedule 09.04.2018
comment
Это не открытие выбора, это его расширение. - person Azimuth; 16.08.2018

person    schedule
comment
Протестировали в Firefox 37 и Chrome 41, чтобы убедиться, что в настоящее время это не работает. - person lulalala; 09.04.2015
comment
Может пора этот ответ удалить. - person Jose Manuel Abarca Rodríguez; 10.01.2017
comment
В vanilla js будет $select.dispatchEvent(new MouseEvent('mousedown', { bubbles: true })), поэтому jquery не нужен. Тем не менее, код не открывает раскрывающийся список по соображениям безопасности. - person ; 13.04.2020