Kyles Lösung hat für mich einwandfrei funktioniert, also habe ich meine Nachforschungen angestellt, um Js und CSS zu vermeiden, aber nur bei HTML zu bleiben. Wenn Sie selected
dem Element, das als Kopfzeile angezeigt werden soll, einen Wert von hinzufügen, wird es zunächst als Platzhalter angezeigt. Etwas wie:
<option selected disabled>Choose here</option>
Das vollständige Markup sollte folgendermaßen aussehen:
<select>
<option selected disabled>Choose here</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
Sie können sich diese Geige ansehen und hier ist das Ergebnis:
Wenn Sie nicht möchten, dass die Art des Platzhaltertextes in den Optionen aufgeführt wird, sobald ein Benutzer auf das Auswahlfeld klickt, fügen Sie das hidden
Attribut wie folgt hinzu:
<select>
<option selected disabled hidden>Choose here</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
Überprüfen Sie die Geige hier und den Screenshot unten.
hidden
Attribut , oben in der Antwort verwendet wird , ist ein Attribut , das auf einem beliebigen HTML - Element eingestellt werden kann, und ist in der Regel (aber nicht notwendigerweise) umgesetzt entspricht der Einstellung zu seindisplay: none
mit CSS.hidden
auf einoption
in einemselect
nicht funktioniert in Safari, auf beiden iOS oder Mac. Diese Antwort bietet daher nur teilweise Browserunterstützung.Hier ist die Lösung:
quelle
selected="true"
ungültig ist. Verwenden Sie stattdessenselected="selected"
in (X) HTML oder nurselected
in HTML. Es scheint, dass Sieselected
Attribut mitselected
Eigenschaft verwechselt haben , die wie folgt geändert wird:myOption.selected = true;
odermyOption.selected = false;
hidden
(die „in CSS implementiert typischerweise“ verwendetdisplay: none
sowieso), mitdisplay: none
auf einemoption
nicht funktioniert in Safari; Die Option wird weiterhin angezeigt.Der richtige und semantische Weg ist die Verwendung einer Platzhalter-Beschriftungsoption :
option
Element als erstes untergeordnetes Element von hinzuselect
value
= ""
option
option
required
Attribut dem hinzuselect
Dadurch wird der Benutzer gezwungen , eine andere Option zu wählen , um der Lage zu sein , das Formular zu senden, und Browser sollten machen das
option
wie gewünscht:Die meisten Browser rendern es jedoch wie gewohnt
option
. Wir müssen das Problem also manuell beheben, indem wir Folgendes hinzufügenoption
:selected
Attribut, um es ausgewählt standardmäßigdisabled
Attribut, damit es vom Benutzer nicht ausgewählt werden kanndisplay: none
, um es aus der Werteliste auszublendenquelle
hidden
Attribut einfach dem Platzhalter-Options-Tag hinzu, anstatt den Eindruck zu erwecken,display: none
dass die meisten mobilen Browser dasdisplay: none
CSS-Attribut ignorieren und es meiner Meinung nach noch semantisch korrekter ist.hidden
im Allgemeinen wiedisplay: none
unter der Haube implementiert wird (und die Spezifikation schlägt dies ausdrücklich als "typische" Implementierung vor). Daher wäre ich überrascht, wenn es Browser gäbe - mobil oder anderweitig -, diehidden
funktionierten,display: none
aber nicht funktionierten. Können Sie ein Beispiel nennen?Da Sie keine Platzhalter für
select
Tags zuweisen können , glaube ich nicht, dass es eine Möglichkeit gibt, mit reinem HTML / CSS genau das zu tun, was Sie verlangen. Sie können jedoch Folgendes tun:"Sprache auswählen" wird in der Dropdown-Liste angezeigt. Sobald jedoch eine andere Option ausgewählt ist, kann sie nicht erneut ausgewählt werden.
Ich hoffe das hilft.
quelle
Versuche dies:
Im CSS:
quelle
Ich habe eine Lösung mit einer Spanne, die über der Auswahl angezeigt wird, bis eine Auswahl erfolgt ist. Der Bereich zeigt die Standardnachricht an und ist daher nicht in der Liste der Vorschläge enthalten:
HTML:
CSS:
Javascript (mit JQuery):
Ich habe eine jsfiddle für die Demo gemacht . Getestet mit Firefox und IE8.
quelle
span
dort zu benutzenlegend
und das wäre perfekt oderlabel
pointer-events: none
Zeitspanne, damit Klicks zur Auswahl weitergeleitet werden können.Sie können das CSS natürlich in eine CSS-Datei verschieben, wenn Sie möchten, und ein Skript einfügen, um die
esc
Schaltfläche abzufangen und die deaktivierte Datei erneut auszuwählen. Im Gegensatz zu den anderen ähnlichen Antworten, die ich gegeben habevalue=""
, ist dies so, dass wenn Sie die Werte Ihrer Auswahlliste mit einem Formular senden, es nicht "etwas ausgewählt" enthält. In asp.net wird mvc 5 als json kompiliert mit kompiliertvar obj = { prop:$('#ddl').val(),...};
undJSON.stringify(obj);
der Wert von prop ist null.quelle
Op1:
Op2:
quelle