Eingabetyp = "Text" vs Eingabetyp = "Suche" in HTML5

132

Ich bin neu in HTML5, da ich angefangen habe, mit den neuen Formulareingabefeldern von HTML5 zu arbeiten. Wenn ich mit Formulareingabefeldern arbeite, insbesondere <input type="text" />mit <input type="search" />IMO, gab es keinen Unterschied in allen wichtigen Browsern, einschließlich Safari, Chrome, Firefox und Opera. Das Suchfeld verhält sich auch wie ein normales Textfeld.

Was ist der Unterschied zwischen input type="text"und input type="search"in HTML5?

Was ist der wahre Zweck von <input type="search" />?

Vijin Paulraj
quelle

Antworten:

176

Im Moment gibt es keine große Sache zwischen ihnen - vielleicht wird es nie eine geben. Es geht jedoch darum, den Browserherstellern die Möglichkeit zu geben, etwas Besonderes daraus zu machen, wenn sie dies wünschen.

Denken Sie <input type="number">an Mobiltelefone, rufen Sie Nummernblöcke auf oder type="email"rufen Sie eine spezielle Version der Tastatur auf, wobei @ und .com und der Rest verfügbar sind.

Auf einem Mobiltelefon kann die Suche ein internes Such-Applet aufrufen, wenn dies gewünscht wird.

Auf der anderen Seite hilft es aktuellen Entwicklern mit CSS.

input[type=search]:after { content : url("magnifying-glass.gif"); }
Norguard
quelle
12
+1 für zwei gültige Punkte, 1) internal search applet for mobile phone. 2) ability to make better presentation. Allerdings sollte ich warten, um die Antwort zu akzeptieren, weil ich sicherstellen möchte, dass es keinen anderen Zweck gibt :)
Vijin Paulraj
Im Moment gibt es keine. Die Eingaben sind im Moment entweder nur Namen (da die Eingabe nur teilweise unterstützt wird [Typ = Farbe]), oder die Browser haben ihre eigene spezielle Behandlung implementiert (wie Typ = Nummer oder Typ = E-Mail oder Typ = Bereich). Es gibt keine andere Option - entweder hat es eine spezielle Behandlung durch den Browser oder nicht. Im Moment funktioniert in den meisten Browsern type = search nicht und wahrscheinlich auch nicht (außer möglicherweise, damit es wie ein Suchfeld in iTunes oder einer anderen App aussieht). Derzeit ist es dort, damit SIE zusätzliche Funktionen / Präsentationen hinzufügen können, indem Sie wissen, dass es sich um ein Suchfeld handelt.
Norguard
39
Ein Unterschied besteht darin, dass durch Drücken von [Esc] in einer Sucheingabe die Ergebnisse gelöscht werden. Super praktisch, wenn Ihre Benutzer es häufig verwenden.
Josh Habdas
@ JoshH das ist super praktisch. Haben Sie eine Idee, welche Browser (und Versionen) derzeit davon betroffen sind? Ich wäre absolut bereit, die Antwort zu aktualisieren und sie auf den aktuellen (/ zukünftigen) Zustand der Evergreens zu bringen, da die Landschaft jetzt ganz anders ist als vor anderthalb Jahren.
Norguard
2
Ich würde nicht empfehlen, Pseudoelemente für ersetzte Elemente zu verwenden: Es ist gegen Standards , funktioniert aber in einigen Fällen.
Paul Kozlovitch
29

In den meisten Browsern macht es absolut nichts. Es verhält sich einfach wie eine Texteingabe. Das ist kein Problem. Die Spezifikation erfordert nichts Besonderes. WebKit-Browser behandeln dies jedoch etwas anders, vor allem beim Styling.

Eine Sucheingabe in WebKit hat standardmäßig einen eingefügten Rand, abgerundete Ecken und eine strenge typografische Kontrolle.

Ebenfalls,

Dies ist an keiner mir bekannten Stelle oder in der Spezifikation dokumentiert. Wenn Sie jedoch einen Ergebnisparameter zur Eingabe hinzufügen, wendet WebKit eine kleine Lupe mit einem Dropdown-Pfeil an, der die vorherigen Ergebnisse anzeigt.

<input type=search results=5 name=s>

Referenz

Vor allem gibt es dem eine semantische Bedeutung input type.

Aktualisieren:

Chrome 51 hat die Unterstützung für das Ergebnisattribut entfernt:

Jashwant
quelle
24

Optisch / funktional 2 Unterschiede, wenn der Eingabetyp " Suche " ist: -

  1. Am Ende des Eingabe- / Suchfelds wird ein X -Symbol angezeigt, um die Texte im Feld zu löschen
  2. Durch Drücken der Esc -Taste auf der Tastatur werden auch Texte gelöscht
Harter Raj
quelle
Dies passiert mit Sicherheit nicht überall. In welcher Umgebung wird dies beobachtet?
Stéphane Gourichon
7

In einigen Browsern werden auch die Attribute "Ergebnisse" und "Automatisch speichern" unterstützt, die automatische Funktionen für "Letzte Suchvorgänge" mit dem Lupensymbol bereitstellen.

Mehr Info

Scott Wilson
quelle
1
Chrome 51 entfernte die Unterstützung für das resultsAttribut: developer.google.com/web/updates/2016/08/…
Flimm
2

Seien Sie eigentlich sehr vorsichtig, wenn Sie davon ausgehen, dass es nichts bewirkt. Wenn Sie mit der Typensuche zu Stileingaben wechseln, weisen diese bestimmte Attribute auf, die nicht geändert werden können. Versuchen Sie, die Grenze auf einer zu ändern, und Sie werden es ziemlich unmöglich finden. Es gibt mehrere andere nicht zulässige CSS-Attribute. Überprüfen Sie dies auf alle Details.

Wie von Jashwant erwähnt, gibt es auch das Ergebnisattribut, obwohl es nur dann sehr gut funktioniert, wenn Sie auch das Attribut "Automatisch speichern" einschließen. Das Dropdown-Menü funktioniert jedoch in den meisten Browsern nicht. Verwenden Sie es daher auf eigene Gefahr.

sage88
quelle
1

Es gibt einen Unterschied in der Aktion des Browsers. Wenn Sie einige Wörter eingeben und dann ESC in die Eingabe type="search"in Chrome / Safari eingeben, wird das Eingabefeld gelöscht. Im type="text"Szenario werden die Wörter jedoch nicht gelöscht. Seien Sie also vorsichtig bei der Auswahl des Typs, insbesondere wenn Sie ihn für die automatische Vervollständigung oder für die Suche verwenden

Yidea
quelle
1

Bonuspunkt: input type="search"hat die Möglichkeit, das onsearchAttribut zu verwenden (obwohl ich bemerkt habe, dass dies in Microsofts neuem Edge-Browser NICHT funktioniert), wodurch das Schreiben einer benutzerdefinierten onkeypress=if(key=13) { function() }Sache entfällt .

James Groves
quelle
1

Wenn Sie input type = "search" verwenden, wird im Text des Keybord-Enterkeys "search" angezeigt, was die Benutzererfahrung verbessern kann. Sie müssen jedoch den Stil anpassen, wenn Sie diesen Typ verwenden.

Qingyang Yu
quelle
0

Dies hängt von der Sichtweise des Programmierers ab. Ein Programmierer kann den Zweck der Eingabe leicht anhand des Typs bestimmen. Für das CSS-Styling und für JavaScript oder JQuery ist es einfach, die Regeln in den Eingaben zu überprüfen.

Fil
quelle
-1

Wenn Sie dies festlegen, hat dies jedoch negative Auswirkungen auf Ihr Eingabeelement

<input type="search">

Und in Ihrem CSS setzen Sie

input {background: url("images/search_bg.gif");}

Es wird überhaupt nicht auftauchen.

STAHL
quelle