The exploration of <input> attributes

Alberto Robles
8 min readDec 13, 2023

As a Full Stack Developer with many years of experience under my belt, I thought I had seen most of what HTML had to offer. Yet, the world of web development is ever-evolving, and it never ceases to surprise even the most seasoned professionals. Today, I want to share with you some fascinating insights into HTML’s <input> element—specifically, its lesser-known attributes that are incredibly useful yet often overlooked.

You might be familiar with the common faces of the <input> tag—type, name, value—the usual suspects that form the backbone of web forms everywhere. But beyond these familiar fields lies a world of hidden gems that can transform the way you approach form design and functionality.

No matter how much experience you have, there’s always something new to learn — a fresh perspective or a tool waiting to be discovered that can simplify your code, enhance accessibility, or elevate the user experience.

In this post, I’ll take you through these attributes one by one, providing a detailed look at how they work, where they can be best applied, and why they are more useful than you might have thought. Whether you’re a budding developer or a seasoned coder, I’m confident you’ll find these insights as intriguing and valuable as I did.

So, let’s embark on this journey together and uncover the hidden potential of HTML <input> attributes!

1. The accept Attribute

  • Description: This attribute specifies the file types that users are allowed to select for a file upload input.
  • Use Case: Perfect for restricting file uploads to certain types like images or PDFs in a file upload form.
  • Code Sample:
<input type="file" name="photo" accept="image/png, image/jpeg">

Use MIME types for specifying file formats for better control.

2. The alt Attribute

  • Description: Provides alternative text for the image in an image-type input.
  • Use Case: Used for adding descriptive text to image buttons for accessibility.
  • Code Sample:
<input type="image" src="login-btn.png" alt="Login button">

Always include alt for image inputs to support screen readers.

3. The checked Attribute

  • Description: Indicates that a checkbox or radio button is pre-selected.
  • Use Case: Useful for setting default options in forms like terms agreement or default selections.
  • Code Sample:
<input type="checkbox" name="agree" checked> Agree to Terms

Use sparingly to avoid overriding user choice.

4. The dirname Attribute

  • Description: Sends the text direction of the input along with the data.
  • Use Case: Useful in bilingual forms to determine the text’s writing direction.
  • Code Sample:
<input type="text" name="text" dirname="text.dir">

Combine with dir attribute on the form for enhanced direction control.

5. The disabled Attribute

  • Description: Makes the input non-interactive and non-editable.
  • Use Case: Disabling form fields until certain conditions are met (like a checkbox ticked).
  • Code Sample:
<input type="text" name="input" disabled>

Disabled fields are not submitted; use readonly if you need the value sent.

6. The form Attribute

  • Description: Associates the input element with a form elsewhere in the document.
  • Use Case: Useful when the input element is not physically within the <form> tag but should still be a part of the form.
  • Code Sample:
<input type="submit" form="myFormId" value="Submit">

Ensure the form attribute's value matches the id of the form you want to associate with

7. The formaction Attribute

  • Description: Overrides the form’s action attribute for a specific submit button.
  • Use Case: To send form data to a different URL than the form’s action URL.
  • Code Sample:
<input type="submit" formaction="another-action.php">

Ideal for forms where different submit buttons need to perform different actions.

8. The formenctype Attribute

  • Description: Specifies how the form data should be encoded when sent to the server.
  • Use Case: Essential for forms that need to submit files or large data sets.
  • Code Sample:
<input type="submit" formenctype="multipart/form-data">

Use in conjunction with method="post" for file uploads.

9. The formmethod Attribute

  • Description: Defines the HTTP method for sending data to the action URL.
  • Use Case: Changing how data is submitted for specific input elements.
  • Code Sample:
<input type="submit" formmethod="post">

Switch between GET (default) and POST depending on data sensitivity and size.

10. The formnovalidate Attribute

  • Description: Indicates that the form should not be validated on submission.
  • Use Case: Useful for ‘Save Draft’ buttons where validation is not required.
  • Code Sample:
<input type="submit" formnovalidate>

Use this attribute cautiously as it can lead to the submission of incomplete or incorrect data.

11. The formtarget Attribute

  • Description: Specifies a name or a keyword indicating where to display the response after submitting the form.
  • Use Case: Directing the response of a form submission to a new window or an iframe.
  • Code Sample:
<input type="submit" formtarget="_blank">

Commonly used for opening form response in a new tab (_blank).

12. The height and width Attributes

  • Description: Specifies the height and width of the <input> element, usually used with type="image".
  • Use Case: To define the size of the image used as a submit button.
  • Code Sample:
<input type="image" src="submit.png" alt="Submit" width="100" height="50">

Ensure the image dimensions match the specified height and width for best display.

13. The list Attribute

  • Description: Refers to a <datalist> element that contains a set of pre-defined options for an <input> element.
  • Use Case: Providing a dropdown of suggested options for an input field.
  • Code Sample:
<input type="text" list="browsers"> <datalist id="browsers">   <option value="Chrome">   <option value="Firefox"> </datalist>

Great for enhancing user experience with autocomplete features.

14. The max and min Attributes

  • Description: Specify the maximum and minimum values for input types like number or date.
  • Use Case: Restricting input to a certain range, such as dates within a specific period or a number within limits.
  • Code Sample:
<input type="number" name="quantity" min="1" max="100">

Essential for preventing out-of-range input and ensuring data integrity.

15. The maxlength and minlength Attributes

  • Description: Define the maximum and minimum number of characters allowed in a text field.
  • Use Case: Useful for fields like passwords or usernames where length needs to be controlled.
  • Code Sample:
<input type="password" minlength="6" maxlength="12">

Helps enforce security policies (like minimum password length).

16. The multiple Attribute

  • Description: Allows users to select or enter multiple values in a single input, used with email and file types.
  • Use Case: Uploading multiple files at once or entering multiple email addresses.
  • Code Sample:
<input type="file" name="files" multiple>

Streamlines processes where multiple entries are beneficial.

17. The pattern Attribute

  • Description: Sets a regular expression for input validation, typically used with text-type inputs.
  • Use Case: For custom validation like specific formats of phone numbers, zip codes, or custom strings.
  • Code Sample:
<input type="text" pattern="[A-Za-z]{3}" title="Enter a three-letter country code">

Use alongside the title attribute to provide users with a pattern guide.

18. The placeholder Attribute

  • Description: Provides a hint to the user about what should be entered in the input field.
  • Use Case: Displaying example text or formatting instructions in an input field.
  • Code Sample:
<input type="text" placeholder="Enter your name">

Enhances usability by providing guidance but should not replace labels.

19. The readonly Attribute

  • Description: This makes the input field uneditable, though the value can still be selected and submitted.
  • Use Case: Displaying information that shouldn’t be altered by the user, like calculated totals.
  • Code Sample:
<input type="text" readonly value="Calculated Total">

Useful for displaying but protecting certain data within forms.

20. The required Attribute

  • Description: Indicates that the field must be filled out before submitting the form.
  • Use Case: Ensuring that essential fields in a form are completed.
  • Code Sample:
<input type="text" required>

Critical for form validation and preventing incomplete submissions.

21. The size Attribute

  • Description: Defines the width of the text input in terms of characters.
  • Use Case: To adjust the width of an input field, particularly useful for aesthetic purposes or when a specific input length is expected.
  • Code Sample:
<input type="text" size="30">

Remember, this does not limit the number of characters that can be entered, just the visible width.

22. The src Attribute

  • Description: Specifies the URL of the image to be used as a submit button, used with type="image".
  • Use Case: Customizing the submit button with an image.
  • Code Sample:
<input type="image" src="submit-button.png" alt="Submit">

Always provide an alt attribute for accessibility.

23. The step Attribute

  • Description: Specifies the legal number intervals for an input field, used with type="number" or type="range".
  • Use Case: Controlling the increment level for numerical input, like quantity selection.
  • Code Sample:
<input type="number" name="quantity" step="1">

Set to “any” to allow decimal increments.

24. The type Attribute

  • Description: Specifies the type of input control to display, such as text, date, email, etc.
  • Use Case: Tailoring the input field to the type of data expected, improving usability and validation.
  • Code Sample:
<input type="email" name="email">

Choosing the right type can also trigger specific keyboards on mobile devices.

25. The value Attribute

  • Description: Specifies the default value of an input field.
  • Use Case: Pre-filling form fields with default or previously submitted values.
  • Code Sample:
<input type="text" name="name" value="John Doe">

Particularly useful in editing forms or when keeping user input after a form error.

26. The autofocus Attribute

  • Description: Automatically focuses the input when the page loads.
  • Use Case: Directing immediate attention to a specific input field, like a search bar or the first field of a form.
  • Code Sample:
<input type="text" autofocus>

Use sparingly as it can disrupt the natural flow of the page.

27. The autocomplete Attribute

  • Description: Specifies whether the browser should provide autocomplete functionality.
  • Use Case: Enhancing user experience by allowing the browser to predict and fill in values based on user history.
  • Code Sample:
<input type="text" name="username" autocomplete="username">

Can be set to “on” or “off”, depending on whether you want to use browser autocomplete.

28. The autocapitalize Attribute

  • Description: Controls whether and how text values are automatically capitalized.
  • Use Case: Improving text input on mobile devices, especially for fields like names or the start of sentences.
  • Code Sample:
<input type="text" autocapitalize="words">

Options include none, sentences, words, and characters.

29. The capture Attribute

  • Description: Used with type="file" to control media capture from the device’s camera or microphone.
  • Use Case: Streamlining the process of uploading images, videos, or audio from mobile devices.
  • Code Sample:
<input type="file" capture="user">

Can be set to user or environment to specify the camera to use on a mobile device.

30. The inputmode Attribute

  • Description: Provides a hint to the browser on mobile devices to display an appropriate virtual keyboard.
  • Use Case: Optimizing user input for specific data types like numeric or email.
  • Code Sample:
<input type="text" inputmode="decimal">

Useful for enhancing mobile user experience.

31. The spellcheck Attribute

  • Description: Indicates whether the element should have spell-checking enabled when entering text.
  • Use Case: Useful in text areas or content-editable fields where users input significant amounts of text.
  • Code Sample:
<input type="text" spellcheck="true">
  • Set to false in fields where technical or niche terms are frequently used to avoid unnecessary red underlines.

32. The tabindex Attribute

  • Description: Sets the tab order of an element, defining the sequence for keyboard navigation.
  • Use Case: Customizing the order in which users can tab through form elements, especially in complex forms.
  • Code Sample:
<input type="text" tabindex="1">

Use positive values to define a specific tab order. Avoid high values which might disrupt the flow.

33. The title Attribute

  • Description: Provides additional, advisory information about the element, often displayed as a tooltip.
  • Use Case: Offering extra guidance or context for an input field, enhancing usability.
  • Code Sample:
<input type="text" title="Enter your full name">

Keep the title concise yet descriptive. Helpful for accessibility and user guidance.

As we wrap up this deep dive into the lesser-known but incredibly useful attributes of the HTML <input> element, I'm curious to hear about your experiences. Were there any attributes in this list that were new to you? Which ones do you find most useful in your projects?

The world of web development is vast and constantly evolving, and there’s always a new trick or technique waiting to be discovered. If you have any additional tips, tricks, or insights about working with <input> elements, or if there are other attributes you've found particularly handy, I'd love to hear about them. Sharing knowledge is one of the best ways we can all grow as developers.

Please drop your thoughts, experiences, and any additional wisdom in the comments below. Let’s continue learning from each other and enhancing our web development skills!