Standard-text, der nicht angezeigt im drop-down-Liste
Ich habe eine select
dem zunächst zeigt Sprache Wählen, bis der Benutzer eine Sprache ausgewählt. Wenn der Benutzer auswählen wird geöffnet, ich möchte es nicht zu zeigen Sprache Wählen option, weil es nicht eine tatsächliche option.
Wie kann ich das erreichen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kyle ' s Lösung arbeitete für mich vollkommen in Ordnung, so habe ich meine Forschung, um zu vermeiden, dass alle Js und CSS, aber nur kleben mit HTML.
Hinzufügen einen Wert von
selected
zu dem Element angezeigt werden soll als header zwingt ihn zu zeigen, in Erster Linie als Platzhalter.So etwas wie:
Den kompletten markup sollte entlang diesen Linien:
Können Sie einen Blick auf diese fiddle, und hier ist das Ergebnis:
Wenn Sie nicht wollen die Art von Platzhalter-text erscheinen in den Optionen, wenn ein Benutzer klickt auf den select-box fügen Sie nur die
hidden
- Attribut wie folgt:Überprüfen Sie die Fiedel hier und die Abbildung unten.
hidden
- Attribut, die in der Antwort oben, ist ein Attribut, das gesetzt werden kann auf jedes beliebige HTML-element, und ist in der Regel (aber nicht notwendigerweise) umgesetzt werden, entspricht der Einstellungdisplay: none
mit CSS.hidden
auf eineoption
imselect
funktioniert nicht in Safari auf iOS oder Mac. Diese Antwort bietet somit nur teilweise browser-Unterstützung.Hier ist die Lösung:
selected="true"
ist ungültig. Verwenden Sie stattdessenselected="selected"
in (X)HTML-oder nurselected
im HTML-Format. Es scheint, Sie verwechselnselected
Attribut mitselected
Eigenschaft, die geändert wird, wie diese:myOption.selected = true;
odermyOption.selected = false;
hidden
(das "in der Regel implementiert in CSS" mitdisplay: none
sowieso), mitdisplay: none
auf eineoption
funktioniert nicht in Safari; die option noch angezeigt wird.Den richtigen und semantische Methode ist mit einem Platzhalter-label-option:
- option
element als erstes Kind desselect
value
= ""
zu, dassoption
option
erforderlich
Attribut derselect
Dies zwingt den Benutzer zur Auswahl einer anderen option, um der Lage sein, das Formular zu senden, und der Browser sollte Rendern die
option
wie gewünscht:Jedoch die meisten Browser Rendern wird es wie ein normales
option
. So werden wir zu tun haben, beheben Sie es manuell, indem Sie den folgenden, um dieoption
:ausgewählt
- Attribut, um es ausgewählt standardmäßigdeaktiviert
- Attribut, um es nicht-wählbar durch den Anwenderdisplay: none
, um es zu verbergen aus der Liste der WerteCSS:
HTML:
hidden
- Attribut, um die option Platzhalter-tag stattdisplay: none
wie es scheint, dass die meisten mobilen Browser ignorieren diedisplay: none
CSS-Attribut, und es ist sogar mehr semantisch korrekt meiner Meinung nach.hidden
ist im Allgemeinen implementiert, wiedisplay: none
unter der Haube (und die Spezifikation weist ausdrücklich darauf hin, dies als eine "typische" Realisierung). Als solche, ich würde sein überrascht, wenn es irgendwelche Browser -, mobile-oder sonst - wohidden
gearbeitet, aberdisplay: none
nicht. Können Sie irgendwelche Muster?Weil Sie nicht verwenden können, weisen Sie Platzhalter für
select
tags, ich glaube nicht, dass es irgendeinen Weg gibt, genau das zu tun, was Sie für Fragen mit reinem HTML/CSS. Sie können jedoch etwas tun, wie dieses:"Sprache auswählen" in der dropdown-Liste auswählen, aber wenn eine andere option ausgewählt ist, wird es nicht möglich sein es erneut.
Ich hoffe, das hilft.
Versuchen Sie dies:
In der CSS:
Habe ich eine Lösung mit einer Spannweite oben dargestellt, ist der select, bis eine Auswahl erfolgt. Die Spannweite zeigt die Standard-Nachricht, und so ist es nicht in der Liste der Vorschläge:
HTML:
CSS:
Javascript (mit JQuery):
Habe ich eine jsfiddle demo. Getestet mit Firefox und IE8.
span
dort verwendenlegend
und das wäre perfekt oderlabel
pointer-events: none
auf Ihre Spannweite zu ermöglichen, Klicks passieren zu wählen.können Sie natürlich bewegen Sie den css in eine css-Datei, wenn Sie wollen, und setzen ein Skript zu fangen, die
esc
Schaltfläche, um die wieder deaktiviert. Im Gegensatz zu den anderen ähnliche Antworten, die ich gestelltvalue=""
, das ist so, wenn Sie senden Sie die Wert(E) der select-Liste mit einem Formular, wird es nicht enthalten, die "für etwas". In asp.net mvc 5 gesendet als json zusammengestelltvar obj = { prop:$('#ddl').val(),...};
undJSON.stringify(obj);
den Wert der prop null.Op1:
Op2: