Table of Contents for
The Modern Web

Version ebook / Retour

Cover image for bash Cookbook, 2nd Edition The Modern Web by Peter Gasston Published by No Starch Press, 2013
  1. The Modern Web
  2. Cover
  3. The Modern Web
  4. Advance Praise for
  5. Praise for Peter Gasston’s
  6. Dedication
  7. About the Author
  8. About the Technical Reviewer
  9. Acknowledgments
  10. Introduction
  11. The Device Landscape
  12. The Multi-screen World
  13. Context: What We Don’t Know
  14. What You’ll Learn
  15. A. Further Reading
  16. 1. The Web Platform
  17. A Quick Note About Terminology
  18. Who You Are and What You Need to Know
  19. Getting Our Terms Straight
  20. The Real HTML5
  21. CSS3 and Beyond
  22. Browser Support
  23. Test and Test and Test Some More
  24. Summary
  25. B. Further Reading
  26. 2. Structure and Semantics
  27. New Elements in HTML5
  28. WAI-ARIA
  29. The Importance of Semantic Markup
  30. Microformats
  31. RDFa
  32. Microdata
  33. Data Attributes
  34. Web Components: The Future of Markup?
  35. Summary
  36. C. Further Reading
  37. 3. Device-Responsive CSS
  38. Media Queries
  39. Media Queries in JavaScript
  40. Adaptive vs. Responsive Web Design
  41. Viewport-Relative Length Units
  42. Responsive Design and Replaced Objects
  43. Summary
  44. D. Further Reading
  45. 4. New Approaches to CSS Layouts
  46. Multi-columns
  47. Flexbox
  48. Grid Layout
  49. The Further Future
  50. Summary
  51. E. Further Reading
  52. 5. Modern JavaScript
  53. New in JavaScript
  54. JavaScript Libraries
  55. Polyfills and Shims
  56. Testing and Debugging
  57. Summary
  58. F. Further Reading
  59. 6. Device Apis
  60. Geolocation
  61. Orientation
  62. Fullscreen
  63. Vibration
  64. Battery Status
  65. Network Information
  66. Camera and Microphone
  67. Web Storage
  68. Drag and Drop
  69. Interacting with Files
  70. Mozilla’s Firefox OS and WebAPIs
  71. PhoneGap and Native Wrappers
  72. Summary
  73. G. Further Reading
  74. 7. Images and Graphics
  75. Comparing Vectors and Bitmaps
  76. Scalable Vector Graphics
  77. The canvas Element
  78. When to Choose SVG or Canvas
  79. Summary
  80. H. Further Reading
  81. 8. New Forms
  82. New Input Types
  83. New Attributes
  84. Datalists
  85. On-Screen Controls and Widgets
  86. Displaying Information to the User
  87. Client-side Form Validation
  88. The Constraint Validation API
  89. Forms and CSS
  90. Summary
  91. I. Further Reading
  92. 9. Multimedia
  93. The Media Elements
  94. Media Fragments
  95. The Media API
  96. Media Events
  97. Advanced Media Interaction
  98. Summary
  99. J. Further Reading
  100. 10. Web Apps
  101. Web Apps
  102. Hybrid Apps
  103. TV Apps
  104. Webinos
  105. Application Cache
  106. Summary
  107. K. Further Reading
  108. 11. The Future
  109. Web Components
  110. The Future of CSS
  111. Summary
  112. L. Further Reading
  113. M. Browser Support as of March 2013
  114. The Browsers in Question
  115. Enabling Experimental Features
  116. Chapter 1: The Web Platform
  117. Chapter 2: Structure and Semantics
  118. Chapter 3: Device-Responsive CSS
  119. Chapter 4: New Approaches to CSS Layouts
  120. Chapter 5: Modern JavaScript
  121. Chapter 6: Device APIs
  122. Chapter 7: Images and Graphics
  123. Chapter 8: New Forms
  124. Chapter 9: Multimedia
  125. Chapter 10: Web Apps
  126. Chapter 11: The Future
  127. N. Further Reading
  128. Introduction
  129. Chapter 1: The Web Platform
  130. Chapter 2: Structure and Semantics
  131. Chapter 3: Device-Responsive CSS
  132. Chapter 4: New Approaches to CSS Layouts
  133. Chapter 5: Modern JavaScript
  134. Chapter 6: Device APIs
  135. Chapter 7: Images and Graphics
  136. Chapter 8: New Forms
  137. Chapter 9: Multimedia
  138. Chapter 10: Web Apps
  139. Chapter 11: The Future
  140. Index
  141. About the Author
  142. Copyright

New Input Types

In HTML 4.01, a handful of form elements allowed user input, including textarea, checkbox, and radio, but the most common was without a doubt input, most often with a type attribute value of text. This hard-working field (from here on known as the text input) was used in every situation in which a specialized control was unavailable: as a search box, for telephone numbers and email addresses … you name it, the text input did it, with only some client- or server-side validation to give meaning to the different types of data being provided by the user.

When work on HTML5 was underway, with its stated emphasis on standardizing common patterns of existing usage, creating new input types to lift some of the burden from the encumbered text input was really a no-brainer. Now a handful of properties have the appearance of a text input but with different type values to give meaning to the data.

The first new value is search, which is (fairly obviously) used to mark up a search box. It looks like this:

<input type="search">

In some browsers, the appearance of the search box is differentiated from that of a regular text input, sometimes with rounded corners to match the OS it’s running on or perhaps with a button to clear the contents of the field. A few different examples are shown in Figure 8-1. But although its appearance and behavior might differ from a text input, search has no limitation on the type of data that you can enter.

The search input rendered in different browsers: Chrome for Ubuntu (left) and Safari for iOS (right)
Figure 8-1. The search input rendered in different browsers: Chrome for Ubuntu (left) and Safari for iOS (right)

That’s not the case with the next two values, email and url, which are provided for the user to enter—can you guess? that’s right!—an email address and a URL. The fields look identical to a text input but have a key difference: They limit the data that users can enter into them. Here’s how these values are used:

<input type="email">
<input type="url">

The email type accepts only a well-formatted email address— , for example—and the url type requires a correctly formatted URL, including the protocol, such as http://broken-links.com. If the user enters a value that doesn’t match the required pattern into either field, the field will be declared invalid. I’ll return to this subject a little later, in Client-side Form Validation.

Another commonly requested piece of information is a telephone number. The new dedicated input for this has a type of tel:

<input type="tel">

The actual format of telephone numbers can vary wildly, including numbers, letters, and symbols, so this field doesn’t have any restrictions as to which characters can be entered.

As many browsers display these new input types mostly identically, what exactly is the point of using them instead of text? Well, I’ve already mentioned that they provide some native validation, which I’ll cover in Client-side Form Validation, but aside from that, they also offer another big advantage: On many devices with on-screen (or soft) keyboards, they provide the user with a sympathetic keyboard layout.

Apple popularized sympathetic soft keyboard layouts when it invented iOS (called iPhone OS back in those heady pre-iPad days), and their implementation is probably still the standard-bearer. If you open the example file input-types.html on an iOS device and put the focus into each input in turn, you’ll see the on-screen keyboard update to display a different layout for each (shown in Figure 8-2 in case you don’t have an iOS device handy): The text input shows a standard keyboard layout; the email input adds an @ and a period, commonly used in email addresses; the url input displays a period, slash, and top-level-domain chooser; and the tel input displays a telephone number pad. All of these inputs help users enter the correct data in a faster and more convenient way.

The sympathetic soft keyboard on iPhone, optimized for (from left to right) text, email, url, and tel input types
Figure 8-2. The sympathetic soft keyboard on iPhone, optimized for (from left to right) text, email, url, and tel input types

The value of sympathetic layouts becomes really obvious when you use an on-screen keyboard that doesn’t support them; switching among different views for letters, cases, numbers, and symbols becomes a real chore. So help your users out by implementing these new types wherever and whenever you can.