Frage

In meinem konkreten Beispiel habe ich es mit einem Dropdown zu tun, z. B.:

<select name="foo" id="bar">
  <option disabled="disabled" selected="selected">Select an item:</option>
  <option>an item</option>
  <option>another item</option>
</select>

Das ist natürlich ziemlicher Unsinn, aber ich frage mich, ob da überhaupt ein striktes Verhalten definiert ist.Opera lehnt das Attribut „ausgewählt“ effektiv ab und wählt das nächste Element in der Liste aus.Alle anderen Browser scheinen dies zuzulassen und es bleibt ausgewählt.

Aktualisieren: Zur Klarstellung: Ich interessiere mich speziell für die Erstauswahl.Ich habe es mit einem dieser Dropdown-Menüs vom Typ „Element auswählen:“ zu tun. In diesem Fall ist die erste Option tatsächlich eine Beschriftung und es wird eine Aktion ausgeführt onchange().Das ist ziemlich nun ja, „fortschreitend verbessert“, da eine Schaltfläche „Senden“ vorhanden ist und nur über JavaScript entfernt wird.Wenn die Option „Auswählen…“ entfernt würde, wäre das, was dann das erste Element werden würde, nicht auswählbar.Schließen wir das einfach aus? onchange Dropdowns insgesamt, oder sollte die Option „Auswählen…“ auswählbar sein, nur ohne Wirkung?

War es hilfreich?

Lösung

Als Antwort auf die Aktualisierung in der Frage würde ich sagen, dass die Option „Label“ auswählbar sein sollte, sie aber entweder bei der Übermittlung nichts bewirkt oder über JavaScript nicht zulassen sollte, dass das Formular ohne Auswahl eines Werts übermittelt wird (vorausgesetzt, dies ist der Fall). ein Pflichtfeld).

Aus Sicht der Benutzerfreundlichkeit würde ich vorschlagen, beides zu tun, damit alle Grundlagen abgedeckt sind.

Andere Tipps

Die HTML-Spezifikationen sind etwas vage (d. h.fehlt völlig) in Bezug auf diese seltsame Kombination.Sie sagen, dass ein Formularelement mit dem deaktivierten Attributsatz nicht erfolgreich sein sollte, also ist es wirklich so kippen ausgewählt werden.

Der Browser stellt es möglicherweise so dar, dass es ausgewählt aussieht, es sollte jedoch nicht in den POST-Daten angezeigt werden.Für mich sieht es so aus, als hätte Opera alles richtig gemacht.

Die HTML-Spezifikationen Geben Sie an, dass sowohl „Ausgewählt“ als auch „Deaktiviert“ verfügbare Optionen für sind <option> Element, gibt aber nicht an, was im Konfliktfall passieren soll.Im Abschnitt über deaktivierte Steuerelemente es sagt

Wenn festgelegt, hat das disabled-Attribut die folgenden Auswirkungen auf ein Element:

  • Deaktivierte Steuerelemente erhalten keinen Fokus.
  • Deaktivierte Steuerelemente werden in der Tab-Navigation übersprungen.
  • Deaktivierte Steuerelemente können nicht erfolgreich sein.

heißt es auch

Wie deaktivierte Elemente gerendert werden, hängt vom Benutzeragenten ab.Beispielsweise sind bei einigen Benutzeragenten Menüelemente, Schaltflächenbeschriftungen usw. deaktiviert.In diesem Beispiel ist das INPUT-Element deaktiviert.Daher kann es keine Benutzereingaben empfangen und sein Wert wird auch nicht mit dem Formular übermittelt.

Obwohl dieser spezielle Fall nicht spezifiziert ist, besagt meine Lektüre, dass die tatsächliche Darstellung eines „ausgewählten“ „deaktivierten“ Elements dem Browser überlassen bleibt.Solange der Benutzer es nicht auswählen kann, funktioniert es standardmäßig.Es heißt zwar, dass ein Skript auf das Element reagieren kann, sodass es für Javascript möglich ist, eine deaktivierte Option als ausgewählt festzulegen (oder eine ausgewählte Option zu deaktivieren).Dies verstößt nicht gegen die Standards, aber bei der Formularübermittlung konnte der Wert dieser Option nicht der ausgewählte Wert sein.Die Auswahlliste müsste (ich gehe davon aus) in diesem Fall einen leeren Wert haben.

Gemäß der HTML 4.01-Spezifikation gilt: deaktiviert Ist ein Standardattribut für das Optionselement, aber das Verhalten ist basierend auf dem Standard wahrscheinlich unbestimmt (lesen Sie die Informationen zum Select-Element und den Optionselementen durch).Hier ist ein Teil, der meiner Meinung nach Aufschluss über die Gründe von Opera für ihre Implementierung geben könnte:

Wenn das Attribut „disabled“ gesetzt ist, hat es folgende Auswirkungen auf ein Element:
* Deaktivierte Steuerelemente erhalten keinen Fokus.
* Deaktivierte Steuerelemente werden in der Tab-Navigation übersprungen.
* Deaktivierte Steuerelemente können nicht erfolgreich sein.

Daher ist es sehr wahrscheinlich, dass dies nur eines der Dinge ist, bei denen die Spezifikation vage genug ist, um beide Interpretationen zuzulassen.Das ist die Art von Eigenart, die das Programmieren für das Web so unterhaltsam und lohnend macht.:P

Schließen wir nur einen "Onchange"-Drop aus? Oder sollte die "Auswählen..." Option wählbar sein, nur ohne Wirkung?

„Onchange“-Dropdown-Menüs werden von eher standardbesessenen Typen missbilligt.

Normalerweise würde ich eine clientseitige Validierung durchführen.So etwas wie „Bitte wählen Sie ein Element aus der Dropdown-Liste aus“.d.h.

Sollte die Option „Auswählen…“ auswählbar sein, nur ohne Wirkung?

Deshalb habe ich Ihre A- oder B-Frage einfach mit „Ja“ beantwortet.:/ Entschuldigung!

Leider spielt es keine Rolle, was passieren soll, da der IE das deaktivierte Attribut im Optionszeitraum nicht unterstützt.

http://webbugtrack.blogspot.com/2007/11/bug-293-cant-disable-options-in-ie.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top