выберите раскрывающийся список не активен в браузере Android - PullRequest
9 голосов
/ 27 января 2012

У меня проблема с тем, что раскрывающийся список выбора не выпадает (он по сути неактивен) при просмотре на мобильном устройстве Android.Он отлично работает как в настольных браузерах, так и в браузере ios - вызывая колесо выбора на ios и выпадающий список выбора с рабочего стола.

Пример кода:

<select id = "log_or_norm" autofocus>
<option value="1">Lognormal</option>
<option value="2">Normal</option>
</select>

Я попробовалпредложение найдено в;http://youngliferamblings.wordpress.com/2011/08/09/select-dropdown-in-android-webview/

, который был

Тег выбора иногда не работает в Android, особенно в приложении, использующем веб-просмотр.Это сводило меня с ума на долгое время.Основное исправление, которое я нашел, даже если ваш выбор закопан глубоко в элементах div и строках и прочем, это css:

select {visibility: visible;-webkit-внешний вид: menulist-текст;}

-webkit-Внешний вид может быть единственным, который действительно нужен, и установка его в 'listbox' также работает.

Вот и все.Это заслуживает отдельного поста.

Без удачи ....

Я надеюсь, что один из гуру может предложить изящное решение, которое поможет мне избежать перехода по маршруту.создания дискретных кнопок для каждого варианта.Я не сомневаюсь, получит ли Android опыт приятного выбора или нет, но я должен иметь возможность позволить пользователям Android выбирать опцию.

Заранее благодарю

Ответы [ 3 ]

0 голосов
/ 31 мая 2013
var divCreated = false;
$(document).ready(function () {
        var value = "";
        $("select").each(function (i) {
                $(this).click(function () {
                        //alert(($(this).is(":focus")));
                        if (!($(this).is(":focus"))) {
                            if (!divCreated) {
                                $("body").append('<div class="for_select"></div>');
                                divCreated = true;
                            }
                            $(this).clone().appendTo(".for_select");
                            open($(this));
                        }
                    });
            });

        function open(obj) {
            var pos = $(obj).offset();
            $(".for_select select").css("position", "absolute");
            $(".for_select select").css("zIndex", "9999999999999");
            var toAdd = $(obj).innerHeight();
            $(".for_select select").offset({
                    top: pos.top + toAdd,
                    left: pos.left
                });
            $(".for_select select").attr("size", ($(obj).children("option").length > 10 ? 10 : $(obj).children("option").length));
            $(".for_select select").change(function () {
                    value = $(".for_select select").val();
                    $(obj).val(value);

                    $(obj).children("option").each(function () {
                            if ($(this).text() == value)
                                $(this).attr("selected", "selected");
                            else if ($(this).attr("selected")) {
                                $(this).removeAttr("selected");
                            }
                        });
                    var parentHeight = $(obj).parent().innerHeight();
                    $(obj).parent().css("height", parentHeight + "px");
                    $(obj).parent().css("position", "relative");
                    $(obj).css("position", "absolute");
                    $(obj).css("left", "0px");
                    var prevElementsHeight = 0;
                    var isSelect = false;
                    $(obj).parent().children("*").each(function () {
                            if ($(this) == $(obj))
                                isSelect = true;
                            if (!isSelect)
                                prevElementsHeight += $(this).innerHeight();
                        });
                    $(obj).css("top", (prevElementsHeight / 2) + "px");
                    $(obj).css("zIndex", "9999");

                    close($(".for_select select"));
                });
        }

        function close(obj) {
            $(obj).css("position", "static");
            $(obj).attr("size", "1");
            $(".for_select").empty();
        }
    });
0 голосов
/ 24 июля 2013

Решение пришло довольно просто после того, как я боролся с этим в течение нескольких дней.

Попробуйте отладку, выдавая select из вложенных div, пока не найдете проблемный div.

В моем случае проблемабыло то, что я обернул все div data-role = "page" в родительский div (для загрузки ради на младших устройствах).По некоторым причинам

0 голосов
/ 16 апреля 2012

Попробуйте

getDriver().createElement(By.id("your locator"));
getDriver().createElement(By.id("your locator")).sendKeys("option Name you want to give");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...