<select> не работает в приложении PhoneGap на Android 2.3.3 - PullRequest
11 голосов
/ 11 февраля 2012

Я работаю над приложением PhoneGap для Android и iOS.Большинство вещей работает довольно хорошо, но у меня проблема с тегом <select>.Он улучшен с помощью jQuery mobile и в той версии Android, когда щелкает / нажимает соответствующий элемент div, параметры не отображаются.Они появляются, когда я делаю два клика / нажатия:

  1. на элементе div, содержащем <select>
  2. в области выше элемента div

.Опции сценария появляются, и когда запускается выбранное событие изменения и выполняется привязка кода к нему.

Я обнаружил следующие две проблемы Android: http://code.google.com/p/android/issues/detail?id=10280 и http://code.google.com/p/android/issues/detail?id=6721

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

Проблема существует только на Android 2.3.3, и я думаю, что на старых версиях тоже.На iOS и более новых Android все отлично работает.

Я целый день борюсь с этой проблемой и все перепробовал.

Любая помощь, советы будут высоко оценены.Спасибо.

Ответы [ 8 ]

7 голосов
/ 09 марта 2012

Вы пытались добавить атрибут data-native-menu = "false" в меню выбора.

Пример:

<select name="gender" id="gender" data-theme="b" data-native-menu="false" >
    <option value="">Please specify ...</option>
    <option value="option1">Male</option>
    <option value="option2">Female</option>
    <option value="option3">Undisclosed</option>
</select>
3 голосов
/ 23 июля 2013

Это то, что решило мою проблему.В Android 2.3.x я установил z-index в поле выбора на ~1000 (намного выше других элементов), и это решило проблему.Видимо родной браузер портит "слои".Надеюсь, поможет.

2 голосов
/ 13 июня 2013

Имея ту же проблему с Android 2.3 и сгенерированным в JavaScript блоком выбора, я решил использовать jQuery для фокусировки элемента после его рендеринга и каждый раз, когда он рендерится снова (даже если используется $ .SELECT.show () ).

После выполнения $ ("# element"). Focus () окно выбора снова работает нормально, оно одновременно активируется и обновляется после выбора новой опции.

1 голос
/ 18 октября 2014

Единственный способ, которым это сработало для меня, это добавить это в мой скрипт jQuery:

$('select').click(function () {
    $(this).focus();
});
1 голос
/ 09 декабря 2012

У меня была та же проблема, я понял, что проблема в том, что я использовал свойство data-position = "fixed" для заголовка страницы, которая содержала элемент select.когда я удалил data-position = "fixed" из моего заголовка, заголовок не был исправлен наверняка, но избавился от этой надоедливой проблемы выбора, который не "нажимался"надеюсь, это поможет!

0 голосов
/ 03 ноября 2014

Мне известно, что этот вопрос был опубликован два года назад, но на тот случай, если кто-то столкнется с этой проблемой сегодня, как я недавно:

У меня было то же поведение, что и у вас.У меня была проблема с div, который появился в виде заголовка и имел атрибут data-role = "header" и data-position = "fixed".В jquery mobile есть ошибка, которая вызывает ряд странных проблем в Android 2.2 / 2.3 (http://demos.jquerymobile.com/1.3.2/widgets/fixed-toolbars/).

. Я исправил эту ошибку, удалив 'data-position = "fixed"' из заголовка и добавив пользовательский класссо следующим кодом:

.custom-header{
    position: fixed !important;
    left: 0px !important;
    right: 0px !important;
    top: 0px !important;
    z-index: 999 !important;
}

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 02 декабря 2013

Убедитесь, что ваша div страница не находится внутри другой div. Это должно выглядеть так:

<body>
  <div data-role="page">
    ...
  </div>
 </body>

НЕ так:

<body>
  <div>
    ...
    <div data-role="page">
      ...
    </div>
    ...
  </div>
</body>

У меня была точно такая же проблема при использовании select с data-native-menu="true", и все работало нормально, как только я удалил этот лишний div.

0 голосов
/ 24 октября 2013

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

$(".select_box").change(function() {
    $(this).hide();
    $(".select_box").show();
});

Bum, обновлено.

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

...