input type="text" vs input type="search" in HTML5

FormsHtmlInput

Forms Problem Overview


I'm new to HTML5 as begun to work with HTML5's new form input fields. When I'm working with form input fields, especially <input type="text" /> and <input type="search" /> IMO there wasn't any difference in all major browser including Safari, Chrome, Firefox and Opera. And the search field also behaves like a regular text field.

So, what is the difference between input type="text" and input type="search" in HTML5?

What is the real purpose of <input type="search" />?

Forms Solutions


Solution 1 - Forms

Right now, there isn't a huge deal between them - maybe there never will be. However, the point is to give the browser-makers the ability to do something special with it, if they want.

Think about <input type="number"> on cellphones, bringing up number pads, or type="email" bringing up a special version of the keyboard, with @ and .com and the rest available.

On a cellphone, search could bring up an internal search applet, if they wanted.

On the other side, it helps current devs with css.

input[type=search]:after { content : url("magnifying-glass.gif"); }

Solution 2 - Forms

> It does absolutely nothing in most browsers. It just behaves like a > text input. This isn't a problem. The spec doesn't require it to do > anything special. WebKit browsers do treat it a bit differently > though, primarily with styling. > > A search input in WebKit by default has an inset border, rounded > corners, and strict typographic control.

Also,

> This isn't documented anywhere that I know of nor is it in the spec, > but you if you add a results parameter on the input, WebKit will apply > a little magnifying glass with a dropdown arrow showing previous > results.

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

Reference

Above all, it provides a semantic meaning to the input type.

Update:

Chrome 51 removed support for the results attribute:

Solution 3 - Forms

Visually/functionally, 2 differences if the input type is 'search':-

  1. You get a 'X' symbol at the end of the input/search box to clear texts in the box
  2. Pressing 'Esc' key on keyboard also clears texts

Solution 4 - Forms

On some browsers, it also supports the "results" and "autosave" attributes which provides automatic "recent searches" functionality with the magnifier icon.

More info

Solution 5 - Forms

Actually be very careful about assuming it does nothing. When you go to style inputs with the type search they have certain attributes that cannot be changed. Try to change the border on one and you will find it quite impossible. There are several other disallowed CSS attributes, check out this for all the details.

Also as mentioned by Jashwant there's the result attribute, though it doesn't work very well unless you also include the autosave attribute. The drop down will not work in most browsers, however, so use at your own peril.

Solution 6 - Forms

There's browser difference in action, when you type some words then keyed ESC in input type="search" in chrome/safari the input box will get cleared. but in type="text" scenario, the words will not get cleared. So be careful choosing the type especially when u use it for autocomplete or search related feature

Solution 7 - Forms

Bonus point: input type="search" has the ability to use the onsearch attribute (although I have noticed this does NOT work in Microsofts new Edge Browser), which eliminates the need to write a custom onkeypress=if(key=13) { function() } thing.

Solution 8 - Forms

using input type="search" make the keybord enterkey's text show "search", which may improve user experience. however, you have to adjust the style if using this type.

Solution 9 - Forms

But it has a bad affect on yout input element, if you set

<input type="search">

And in your css you set

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

It wont showup at all.

Solution 10 - Forms

It depends on the programmers point of view, a programmer can easily determine the purpose of the input by looking on the type and it's easy for CSS styling and for JavaScript or JQuery to verify rule in the inputs.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionVijin PaulrajView Question on Stackoverflow
Solution 1 - FormsNorguardView Answer on Stackoverflow
Solution 2 - FormsJashwantView Answer on Stackoverflow
Solution 3 - FormsHarsh RajView Answer on Stackoverflow
Solution 4 - FormsScott WilsonView Answer on Stackoverflow
Solution 5 - Formssage88View Answer on Stackoverflow
Solution 6 - FormsyideaView Answer on Stackoverflow
Solution 7 - FormsJames GrovesView Answer on Stackoverflow
Solution 8 - Formsqingyang yuView Answer on Stackoverflow
Solution 9 - FormsSTEELView Answer on Stackoverflow
Solution 10 - FormsFilView Answer on Stackoverflow