iOS 8 множество ‹select› сериозна грешка на iPhone?

В iOS 8.0 Apple въведе нов бъг в Safari на iPhone, който според мен е много сериозен при използване на множество <select> елементи. Обикновено се използва например за избор на ден на раждане. За възпроизвеждане:

  1. Създайте страница с две <select> с множество <option> във всяка

  2. Отворете в Safari на iOS 8 на iPhone (Бъгът все още съществува в 8.0.2)

  3. Докоснете първото <select>

  4. Изберете третата опция, т.е. март

  5. Забележете, че не актуализира <select> до това, което сте избрали (това го прави в iOS 7)

  6. Докоснете втория елемент <select>

  7. Забележете следното:

    • The first <select> doesn't update
    • Второто <select> показва 3 (което е позицията на първото <select>)
    • Инструментът за избор по-долу показва 1

Можете да повторите това, като редувате докосването на първото и второто <select> и забележете, че се променя по същия модел. Това може да се появи на случаен принцип, освен ако не знаете модела). Изглежда още по-объркващо, ако разполагате и с устройство за избор на години.

За да опитате в мобилното си устройство, опитайте този jsfiddle: http://jsfiddle.net/m7baw590/6/embedded/result/

Освен това onchange="alert(this.value)" съобщава за неправилна стойност (същата, която е избрана на втория елемент <select>. Можете да видите това тук: http://jsfiddle.net/m7baw590/7/embedded/result/

Тези грешки не възникват, ако щракнете върху „Готово“ между всяка селекция или използвате стрелките за превключване.

Има ли някакво решение за това?


person Niclas    schedule 30.09.2014    source източник
comment
Изпратих този доклад за грешка на Apple като проблем 18701881 и получих отговор, че е дубликат на 18484444. Според номера изглежда, че е от преди известно време. Ако някой има заобиколно решение, докато не го оправи, бих искал да знам.   -  person Niclas    schedule 04.11.2014
comment
Възможен дубликат: stackoverflow.com/questions/20039194 /   -  person Andrew    schedule 17.06.2015
comment
Все още не е коригирано в iOS 9.   -  person Niclas    schedule 16.10.2015
comment
Имах същия проблем. Проблемът беше, че моите избрани полета бяха обвити в етикет ‹label›: stackoverflow.com/a/55408079   -  person leishman    schedule 22.10.2019


Отговори (3)


Реших проблема по следния начин:

<select>
    <option></option>
    <option></option>
    <option></option>
    (...)
    <optgroup disabled></optgroup>
</select>

Току-що добави празно <optgroup> към <select>.

person rdshck    schedule 01.02.2016
comment
Впечатляващо! Това проработи! Все пак изглежда като странен хак. Ето една цигулка, която работи в iPhone :) jsfiddle.net/m7baw590/12/embedded/result - person Niclas; 01.02.2016
comment
това работи, но сега интерфейсът за избор на опции изглежда някак различно, подравнен вляво, а не центриран. - person Hans; 16.02.2016
comment
Контролът не се зарежда сега - person Shiva; 26.01.2017
comment
Някой знае ли нещо за доклад за грешки в iOS. Защото все още имам това странно поведение на iOS 10.2 и 10.3 - person Kevin Bieri; 24.05.2017
comment
Все още присъства в 10.4.4, заобиколното решение работи, ако (navigator.userAgent.match(/iPhone/i)) { $('select').each(function () { $(this).append(‹optgroup disabled› ‹/optgroup›); }); - person cocorossello; 22.05.2021

Открих друг бъг с избрани полета в iOS8 (Само на iPhone, iPad изглежда добре например).

http://jsbin.com/kuhogopafe/1

Как се възпроизвежда:

  • Изберете 3 опции
  • Премахнете избора от една опция отново
  • Резултат: вместо 2 избрани опции, само последната неизбрана опция се отчита като избрана сега
person Alex    schedule 30.10.2014
comment
Мога да потвърдя грешката. Предполагам, че се дължи на подобен код с грешки от Apple. Дано го оправят скоро. - person Niclas; 04.11.2014
comment
Изпитвам същата грешка с iOS 8.1.1 на iPhone 5 - person Hans Kristian; 11.12.2014
comment
Срещате същия проблем на iOS 8.1.3 на iPhone 5. - person Joe Chrysler; 02.02.2015
comment
Това все още е валидно с iOS 9.2 на iPhone 6s - person Tute; 07.01.2016
comment
Току-що се натъкнах на този бъг с множествени избори на iOS 9.2 на iPhone 6+. Като се има предвид, че това се случи на iOS 7 и 8 и сега 9, очевидно е, че Apple не прави регресионно тестване. Просто работи, мое **. - person Ian Kemp; 15.02.2016

Единственото решение, което намерих за iphone Safari, е да деактивирам всички други полета за избор на фокус и да активирам отново всички onblur. Това ще принуди потребителя да натисне Готово.

person Andras    schedule 29.01.2016