input type = „tekst” a input type = „search” w HTML5

138

Jestem nowy w HTML5, ponieważ zacząłem pracować z nowymi polami wejściowymi formularza HTML5. Kiedy pracuję z pól wejściowych formularza, szczególnie <input type="text" />i <input type="search" />IMO nie było żadnej różnicy w tym wszystkich głównych przeglądarki Safari, Chrome, Firefox i Opera. Pole wyszukiwania również zachowuje się jak zwykłe pole tekstowe.

Jaka jest więc różnica między input type="text"i input type="search"w HTML5?

Jaki jest prawdziwy cel <input type="search" />?

Vijin Paulraj
źródło

Odpowiedzi:

180

W tej chwili nie ma między nimi wielkiej umowy - może nigdy nie będzie. Chodzi jednak o to, aby twórcy przeglądarek mogli zrobić z nią coś specjalnego, jeśli chcą.

Pomyśl o <input type="number">telefonach komórkowych, wywołaniu type="email"klawiatur numerycznych lub wywołaniu specjalnej wersji klawiatury z @ i .com oraz pozostałymi dostępnymi.

Na telefonie komórkowym funkcja wyszukiwania mogłaby wywołać wewnętrzny aplet wyszukiwania, gdyby chcieli.

Z drugiej strony pomaga obecnym deweloperom z css.

input[type=search]:after { content : url("magnifying-glass.gif"); }
Norguard
źródło
12
+1 za dwa ważne punkty, 1) internal search applet for mobile phone. 2) ability to make better presentation. Jednak z odpowiedzią powinienem zaczekać, bo chcę się upewnić, że nie ma innego celu :)
Vijin Paulraj
W tej chwili nie ma. Wszystkie dane wejściowe są w tej chwili tylko nazwami (tak jak istnieje tylko częściowa obsługa input [typ = kolor]) lub przeglądarki zaimplementowały swoją własną, specjalną obsługę (np. Type = number lub type = email lub type = range). Nie ma innej opcji - albo ma specjalną obsługę przez przeglądarkę, albo nie. W tej chwili w większości przeglądarek typ = search nie działa i prawdopodobnie nie będzie (z wyjątkiem MOŻE wyglądać jak pole wyszukiwania w iTunes lub innej aplikacji). Obecnie jest tam, aby TY możesz dodać dodatkowe funkcje / prezentację, wiedząc, że jest to pole wyszukiwania.
Norguard,
40
Jedna różnica polega na tym, że naciśnięcie klawisza [Esc] w polu wyszukiwania spowoduje usunięcie wyników. Bardzo przydatny, jeśli użytkownicy często go używają.
Josh Habdas
@JoshH, to jest bardzo przydatne. Masz pomysł, na które przeglądarki (i wersje) ma to obecnie wpływ? Byłbym całkowicie skłonny zaktualizować odpowiedź i dostosować ją do obecnego (/ przyszłego) stanu wiecznie zielonych roślin, biorąc pod uwagę, że krajobraz jest teraz zupełnie inny niż półtora roku temu.
Norguard
2
Nie polecałbym używania pseudoelementów na zastępowanych elementach: jest to niezgodne ze standardami , chociaż w niektórych przypadkach działa.
Paul Kozlovitch
30

W większości przeglądarek nie robi absolutnie nic. Po prostu zachowuje się jak wprowadzanie tekstu. To nie jest problem. Specyfikacja nie wymaga od niego niczego specjalnego. Przeglądarki WebKit traktują to jednak nieco inaczej, przede wszystkim pod względem stylizacji.

Pole wyszukiwania w WebKit ma domyślnie wstawione obramowanie, zaokrąglone rogi i ścisłą kontrolę typograficzną.

Również,

Nie jest to udokumentowane w żadnym znanym mi miejscu ani w specyfikacji, ale jeśli dodasz parametr wyników na wejściu, WebKit zastosuje małe szkło powiększające ze strzałką rozwijaną pokazującą poprzednie wyniki.

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

Odniesienie

Przede wszystkim zapewnia semantyczne znaczenie dla input type.

Aktualizacja:

Chrome 51 usunął obsługę atrybutu wyników:

Jashwant
źródło
25

Wizualnie / funkcjonalnie, 2 różnice, jeśli typ wejścia to „ szukaj ”: -

  1. Na końcu pola wprowadzania / wyszukiwania pojawi się symbol „ X ”, aby usunąć tekst w polu
  2. Naciśnięcie klawisza „ Esc ” na klawiaturze również usuwa teksty
Surowy Raj
źródło
1
To z pewnością nie wszędzie. W jakim środowisku jest to obserwowane?
Stéphane Gourichon
7

W niektórych przeglądarkach obsługuje również atrybuty „wyniki” i „autozapis”, które zapewniają funkcję automatycznego „ostatnich wyszukiwań” z ikoną lupy.

Więcej informacji

Scott Wilson
źródło
1
Chrome 51 usunął obsługę resultsatrybutu: developers.google.com/web/updates/2016/08/…
Flimm
2

Właściwie bądź bardzo ostrożny, zakładając, że nic nie robi. Kiedy przejdziesz do wprowadzania stylu z wyszukiwaniem typu, mają one pewne atrybuty, których nie można zmienić. Spróbuj zmienić granicę na jedną, a okaże się to całkiem niemożliwe. Istnieje kilka innych niedozwolonych atrybutów CSS, sprawdź to, aby uzyskać szczegółowe informacje.

Jak wspomniał Jashwant, istnieje atrybut wyniku, chociaż nie działa on zbyt dobrze, chyba że dołączysz również atrybut autozapisu. Lista rozwijana nie będzie działać w większości przeglądarek, więc używaj jej na własne ryzyko.

szałwia88
źródło
1

Istnieje różnica w działaniu przeglądarki, gdy wpiszesz kilka słów, a następnie naciśniesz klawisz ESC na wejściu type="search"w chrome / safari, pole wprowadzania zostanie wyczyszczone. ale w type="text"scenariuszu słowa nie zostaną wyjaśnione. Dlatego ostrożnie wybieraj typ, zwłaszcza gdy używasz go do autouzupełniania lub funkcji związanych z wyszukiwaniem

yidea
źródło
1

Punkt bonusowy: input type="search„ma możliwość korzystania z onsearchatrybutu (chociaż zauważyłem, że NIE działa to w nowej przeglądarce Edge firmy Microsofts), co eliminuje potrzebę pisania niestandardowych onkeypress=if(key=13) { function() }rzeczy.

James Groves
źródło
1

użycie input type = "search" powoduje, że w tekście klawisza enterkey pojawia się słowo "szukaj", co może poprawić komfort użytkowania. jednakże, jeśli używasz tego typu, musisz dostosować styl.

qingyang yu
źródło
0

Zależy to od punktu widzenia programisty, programista może łatwo określić przeznaczenie danych wejściowych, patrząc na typ i łatwo jest stylizować CSS, a JavaScript lub JQuery zweryfikować regułę na wejściach.

Fil
źródło
-1

Ale ma to zły wpływ na element wejściowy, jeśli ustawisz

<input type="search">

A w swoim css ustawiłeś

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

W ogóle się nie pojawi.

STAL
źródło