Aus technischer Sicht sind sie völlig anders. <datalist>
ist ein abstrakter Container mit Optionen für andere Elemente. In Ihrem Fall haben Sie es mit verwendet, <input type="text"
aber Sie können es auch mit Bereichen, Farben, Datumsangaben usw. verwenden. Http://demo.agektmr.com/datalist/
Wenn Sie es mit Texteingabe als eine Art Autovervollständigung verwenden, lautet die Frage wirklich: Ist es besser, eine Freiform-Texteingabe oder eine vorgegebene Liste von Optionen zu verwenden? In diesem Fall denke ich, dass die Antwort etwas offensichtlicher ist.
Wenn wir uns auf die Verwendung von konzentrieren <datalist>
als Liste von Optionen für ein Textfeld konzentrieren, gibt es hier einige spezifische Unterschiede zwischen diesem und einem Auswahlfeld:
- Ein
<datalist>
eingegebenes Textfeld enthält eine einzelne Zeichenfolge sowohl für die Anzeige als auch für die Übermittlung. Ein Auswahlfeld kann einen anderen Übermittlungswert als die Anzeigebezeichnung haben<option value='ie'>Internet Explorer</option>
.
- Ein
<datalist>
gespeistes Textfeld unterstützt das nicht<optgroup>
Tag zum Organisieren der Anzeige nicht.
- Sie können einen Benutzer nicht auf die Liste der Optionen beschränken,
<datalist>
wie Sie es mit einem können<select>
.
- Das Ereignis onchange funktioniert anders. Bei einem
<select>
Element wird das Ereignis onchange sofort nach der Änderung ausgelöst, während <input type="text"
das Ereignis ausgelöst wird, nachdem das Element den Fokus verloren hat oder der Benutzer die Eingabetaste drückt.
<datalist>
hat wirklich fleckige Unterstützung für alle Browser. Die Art und Weise, alle verfügbaren Optionen anzuzeigen, ist inkonsistent, und von da an wird es nur noch schlimmer.
Der letzte Punkt ist meiner Meinung nach wirklich der große. Da Sie einen universelleren Fallback für die automatische Vervollständigung benötigen, gibt es fast keinen Grund, sich die Mühe zu machen, a zu konfigurieren <datalist>
. Außerdem können Sie mit der anständigen automatischen Vervollständigung die Anzeige Ihrer Optionen gestalten, was <datalist>
jedoch nicht der Fall ist. Wenn <datalist>
akzeptierte <li>
Elemente, die Sie manipulieren könnten, wie Sie wollen, wäre es wirklich toll gewesen! Aber nein.
Auch soweit ich das beurteilen kann, ist die <datalist>
Suche eine exakte Übereinstimmung vom Anfang der Zeichenfolge. Wenn Sie also <option value="internet explorer">
nach "Explorer" gesucht hätten, würden Sie keine Ergebnisse erhalten. Die meisten Plugins für die automatische Vervollständigung suchen an einer beliebigen Stelle im Text.
Ich habe nur <datalist>
für einige interne Seiten, bei denen ich mit 100% iger Sicherheit weiß, dass die Benutzer über das neueste Chrome oder Firefox verfügen , als schnellen und faulen Hilfsprogramm verwendet und werde nicht versuchen, falsche Werte einzureichen. In allen anderen Fällen ist die Verwendung <datalist>
aufgrund der sehr schlechten Browserunterstützung schwer zu empfehlen .