Web Foundations

HTML5 Input Types

New input types, validation attributes, and enhanced form controls.

Advertisement

HTML5 Input Types

New input types, validation attributes, and enhanced form controls.

Overview

HTML5 introduced new input types for better user experience.

Key Concepts

  • Email/URL/Phone — Built-in validation
  • Date/Time — Native date pickers
  • Range — Slider controls
  • Color — Color picker
  • Number — Numeric input with spinners

Code Examples

<form>
  <div>
    <label for="email">Email:</label>
    <input type="email" id="email" required>
  </div>
  
  <div>
    <label for="url">Website:</label>
    <input type="url" id="url">
  </div>
  
  <div>
    <label for="phone">Phone:</label>
    <input type="tel" id="phone" pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}">
  </div>
  
  <div>
    <label for="birthday">Birthday:</label>
    <input type="date" id="birthday" min="1900-01-01" max="2024-12-31">
  </div>
  
  <div>
    <label for="time">Time:</label>
    <input type="time" id="time" min="09:00" max="17:00">
  </div>
  
  <div>
    <label for="datetime">DateTime:</label>
    <input type="datetime-local" id="datetime">
  </div>
  
  <div>
    <label for="range">Range:</label>
    <input type="range" id="range" min="0" max="100" value="50">
    <output id="rangeOutput">50</output>
  </div>
  
  <div>
    <label for="color">Color:</label>
    <input type="color" id="color" value="#007bff">
  </div>
  
  <div>
    <label for="number">Number:</label>
    <input type="number" id="number" min="0" max="100" step="5">
  </div>
  
  <div>
    <label for="search">Search:</label>
    <input type="search" id="search" placeholder="Search...">
  </div>
  
  <div>
    <label for="file">File:</label>
    <input type="file" id="file" accept="image/*" multiple>
  </div>
  
  <div>
    <output id="fileOutput"></output>
  </div>
  
  <button type="submit">Submit</button>
</form>

<script>
// Range slider output
const range = document.getElementById('range');
const rangeOutput = document.getElementById('rangeOutput');
range.addEventListener('input', () => {
  rangeOutput.textContent = range.value;
});

// File input preview
const fileInput = document.getElementById('file');
const fileOutput = document.getElementById('fileOutput');
fileInput.addEventListener('change', (e) => {
  Array.from(e.target.files).forEach(file => {
    const reader = new FileReader();
    reader.onload = (event) => {
      fileOutput.innerHTML += `<img src="${event.target.result}" width="100">`;
    };
    reader.readAsDataURL(file);
  });
});
</script>

Practice

Build a form using all HTML5 input types with validation.

Advertisement