webentwicklung-frage-antwort-db.com.de

Mehrfachauswahl in Safari iOS 7

Wenn ich die Multiple-Option in einem ausgewählten Dropdown-Menü verwende, läuft die Safari auf seltsame Probleme. Wenn ich eine Option auswähle und "Fertig" sage, zeigt das Dropdown-Menü wieder "0 Elemente" an. Wenn ich jedoch mehrere Optionen (mehr als eine) auswähle, wird alles außer der ersten ausgewählt. Wenn ich alle Optionen abwählen, bleibt die letzte Option ausgewählt.

Überprüfen Sie dies für eine Demo mit Safari unter iOS 7.0.3.

<select multiple="multiple">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
</select>

Ich habe mir http://www.thecssninja.com/html/optgroup-ios6 angeschaut, aber das spricht über Probleme bei der Verwendung von optgroups - was (wenn es mit mehreren verwendet wird) derzeit die Safari insgesamt zusammenbricht.

21
zacropetricopus
    // hack for iPhone 7.0.3 multiselects bug
    if(navigator.userAgent.match(/iPhone/i)) {
        $('select[multiple]').each(function(){
            var select = $(this).on({
                "focusout": function(){
                    var values = select.val() || [];
                    setTimeout(function(){
                        select.val(values.length ? values : ['']).change();
                    }, 1000);
                }
            });
            var firstOption = '<option value="" disabled="disabled"';
            firstOption += (select.val() || []).length > 0 ? '' : ' selected="selected"';
            firstOption += '>&laquo; Select ' + (select.attr('title') || 'Options') + ' &raquo;';
            firstOption += '</option>';
            select.prepend(firstOption);
        });
    }
10
Gromo

Einfach hinzufügen:

<option disabled></option>

als erstes Element von multiple select.

4
Rodrigo Silva

Dies wurde teilweise in 7.1 behoben, das am anderen Tag veröffentlicht wurde. Es gibt jedoch noch viele Probleme. Die Anzahl der Elemente ist jetzt korrekt, aber ...

  • sie können Optgroup-Titel auswählen (dies sollte nicht möglich sein. Wenn ja, sollten Sie zumindest die gesamte Gruppe auswählen bzw. die Auswahl aufheben).

  • wenn Sie eine Option <option disabled="disabled">Computer 1</option> deaktivieren, können Sie sie trotzdem auswählen, was natürlich völlig falsch ist.

Hol es dir zusammen, Apple.

3
user756659

"Multiple select" Fehler in Safari in iOS 7.0.3 auf dem iPhone wurden auch von anderen in den Diskussionsforen von Apple gemeldet. z.B.:

https://discussions.Apple.com/message/23745665#23745665

https://discussions.Apple.com/message/23607781#23607781

Da Apple das Problem beheben muss, besteht der Konsensansatz für das, was Sie tun können, um die Lösung dieses Problems je Beitrag in diesen beiden Diskussionsthreads zu erleichtern:

  • Suchen Sie nach vorhandenen Fehlern und fügen Sie gegebenenfalls einen neuen Fehler über den Bug Reporter von Apple ein.
  • Nehmen Sie an allen vorhandenen Diskussionsthemen in den Apple Developer Forums teil und öffnen Sie ein neues Thema, falls dies noch nicht diskutiert wurde. (Die oben genannten Diskussionen fanden in öffentlichen Foren von Apple und im Bereich "iPhone" statt und werden daher möglicherweise nicht unbedingt von den Entwicklern des Apple Developer Support gesehen oder beantwortet.)
2
AronR

Ich habe scheinbar ein Update mit mysteriösen Arbeiten mit jQuery gefunden. Ich könnte mir vorstellen, dass Sie den Code Vanilla-ify verwenden könnten, wenn Sie die jQuery-Abhängigkeit nicht wollen:

/**
 * iOS mutliple select fix.
 */
if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) {
    $('select[multiple]').each(function() {
        $(this).prepend('<option disabled></option>');
        $(this).append('<optgroup disabled></optgroup>');
    });
}
0
Daniel Dewhurst