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.
// 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 += '>« Select ' + (select.attr('title') || 'Options') + ' »';
firstOption += '</option>';
select.prepend(firstOption);
});
}
Einfach hinzufügen:
<option disabled></option>
als erstes Element von multiple select.
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.
"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:
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>');
});
}