Ich hätte gerne ein Eingabefeld, in das Benutzer einen benutzerdefinierten Textwert eingeben oder aus einer Dropdown-Liste auswählen können. Ein Stammgast <select>
bietet nur Dropdown-Optionen.
Wie kann ich einen <select>
benutzerdefinierten Wert akzeptieren? Zum Beispiel: Ford?
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
Antworten:
HTML5 verfügt über ein integriertes Kombinationsfeld. Sie erstellen einen Text
input
und adatalist
. Dann fügen Sie dem einlist
Attribut hinzuinput
, mit dem Wert desid
vondatalist
.Update: Ab März 2019 unterstützen alle gängigen Browser (jetzt einschließlich Safari 12.1 und iOS Safari 12.3)
datalist
das für diese Funktionalität erforderliche Niveau. Ausführliche Informationen zur Browserunterstützung finden Sie unter caniuse .Es sieht aus wie das:
quelle
<input type="text" list="cars" style="background:url('images/arrow_down.png') no-repeat right center">
Alen Saqes neueste JSFiddle hat in Firefox nicht für mich umgeschaltet, daher dachte ich, ich würde eine einfache HTML / Javascript-Problemumgehung bereitstellen, die innerhalb von Formularen (in Bezug auf die Übermittlung) gut funktioniert, bis das Datenlisten-Tag von allen Browsern / Geräten akzeptiert wird. Weitere Informationen und Informationen in Aktion finden Sie unter: http://jsfiddle.net/6nq7w/4/ Hinweis: Lassen Sie keine Leerzeichen zwischen umschaltenden Geschwistern zu!
quelle
jQuery-Lösung!
Demo: http://jsfiddle.net/69wP6/2/
Eine weitere Demo unten (aktualisiert!)
Ich brauchte etwas Ähnliches in einem Fall, in dem ich einige feste Optionen hatte und ich wollte, dass eine andere Option bearbeitet werden kann! In diesem Fall habe ich eine versteckte Eingabe gemacht, die die Auswahloption überlappt und bearbeitet werden kann, und jQuery verwendet, damit alles nahtlos funktioniert.
Ich teile die Geige mit euch allen!
HTML
CSS
jQuery
Bearbeiten: In Bezug auf das Design wurden einige einfache Details hinzugefügt, damit die Benutzer klar sehen können, wo die Eingabe endet!
JS Fiddle: http://jsfiddle.net/69wP6/4/
quelle
Das kannst du nicht wirklich. Sie müssen sowohl das Dropdown-Menü als auch das Textfeld haben und das Formular auswählen oder ausfüllen. Ohne Javascript könnten Sie ein separates Optionsfeld erstellen, in dem Dropdown- oder Texteingaben ausgewählt werden. Dies scheint mir jedoch unübersichtlich. Mit etwas Javascript können Sie das eine oder andere deaktivieren, je nachdem, welches Sie auswählen. Beispielsweise haben Sie eine 'andere' Option in der Dropdown-Liste, die das Textfeld auslöst.
quelle
Wenn die Datenlistenoption Ihre Anforderungen nicht erfüllt, sehen Sie sich die Select2-Bibliothek und die " Dynamische Optionserstellung " an.
quelle
Mit einer der oben genannten Lösungen (@mickmackusa) habe ich in React 16.8+ mit Hooks einen funktionierenden Prototyp erstellt.
https://codesandbox.io/s/heuristic-dewdney-0h2y2
Ich hoffe es hilft jemandem.
quelle