Ответ 1
Я решил проблему таким образом:
<select>
<option></option>
<option></option>
<option></option>
(...)
<optgroup disabled></optgroup>
</select>
Просто добавил пустой <optgroup>
в <select>
.
В iOS 8.0 Apple представила новую ошибку в Safari на iPhone, которая, по моему мнению, очень серьезная при использовании нескольких элементов <select>
. Он обычно используется, например, для выбора дня рождения. Воспроизведение:
Создайте страницу с двумя <select>
с несколькими <option>
в каждом
Открыть в Safari на iOS 8 на iPhone (ошибка все еще существует в 8.0.2)
Нажмите первый <select>
Выберите третий вариант, т.е. March
Обратите внимание, что он не обновляет <select>
до того, что вы выбрали (он работает в iOS 7)
Нажмите второй элемент <select>
Обратите внимание на следующее:
<select>
не обновляет<select>
показывает 3 (это позиция первого <select>
)Вы можете повторить это, чередуя нажатие первой и второй <select>
, и обратите внимание, что она изменяется в том же шаблоне. Это может появиться случайным образом, если вы не знаете шаблон). Это выглядит еще более запутанным, если у вас также есть год-сборщик.
Чтобы попробовать на своем мобильном устройстве, попробуйте этот jsfiddle: http://jsfiddle.net/m7baw590/6/embedded/result/
Кроме того, onchange="alert(this.value)"
сообщает неправильное значение (то же, что выбрано во втором элементе <select>
. Вы можете видеть это здесь: http://jsfiddle.net/m7baw590/7/embedded/result/
Эти ошибки не возникают, если вы нажимаете "Готово" между каждым выбором или используйте стрелки для переключения.
Есть ли какое-либо обходное решение для этого?
Я решил проблему таким образом:
<select>
<option></option>
<option></option>
<option></option>
(...)
<optgroup disabled></optgroup>
</select>
Просто добавил пустой <optgroup>
в <select>
.
Я обнаружил еще одну ошибку с выбранными полями в iOS8 (только на iPhone, iPad кажется прекрасным, например).
Как воспроизвести:
Единственное решение, которое я нашел для iphone Safari, - это отключить все остальные флажки onfocus и снова включить все onblur. Это заставит пользователя нажать Готово.