HTML Datetime readOnly Property: Datetime Input Read-Only

The HTML readOnly property, when applied to a <input type="datetime"> element, prevents users from modifying the datetime value directly through the input field. This attribute is beneficial when you want to display a datetime value that should not be altered by the user, while still allowing it to be submitted with the form. This article explains the readOnly property with clear examples and use cases.

What is the readOnly Property?

The readOnly attribute is a boolean attribute that specifies whether an input field is read-only. When set to true, the datetime input field becomes non-editable, meaning users cannot change the value by typing or using the datetime picker. However, the value can still be read and submitted with the form.

Syntax

The syntax for using the readOnly property in an HTML <input type="datetime"> element is straightforward:

<input type="datetime" id="meeting-time" name="meeting-time" readonly>

Key Attributes

Here’s a table summarizing the key attributes related to the readOnly property:

Attribute Value Description
`readonly` `readonly` Specifies that the datetime input field is read-only. The user cannot modify the value.

Examples

Let’s explore several practical examples of how to use the readOnly property with datetime input fields.

Basic Read-Only Datetime Input

This example demonstrates a simple datetime input field that is set to read-only.

<form>
  <label for="event-datetime">Event Datetime:</label>
  <input
    type="datetime"
    id="event-datetime"
    name="event-datetime"
    value="2024-12-25T10:00:00"
    readonly
  />
</form>

In this case, the datetime input field displays “2024-12-25T10:00:00”, but the user cannot modify it.

Setting readOnly Dynamically with JavaScript

You can dynamically set the readOnly property using JavaScript based on certain conditions.

<form>
  <label for="dynamic-datetime">Dynamic Datetime:</label>
  <input
    type="datetime"
    id="dynamic-datetime"
    name="dynamic-datetime"
    value="2024-07-20T14:30:00"
  />
  <button type="button" onclick="toggleReadOnly()">Toggle Read-Only</button>
</form>

<script>
  function toggleReadOnly() {
    const datetimeInput = document.getElementById("dynamic-datetime");
    datetimeInput.readOnly = !datetimeInput.readOnly;
  }
</script>

In this example, clicking the “Toggle Read-Only” button will switch the readOnly state of the datetime input field.

Read-Only Datetime Input with Form Submission

Even when a datetime input field is read-only, its value will still be submitted when the form is submitted.

<form id="readonly-form">
  <label for="submission-datetime">Submission Datetime:</label>
  <input
    type="datetime"
    id="submission-datetime"
    name="submission-datetime"
    value="2024-11-11T18:45:00"
    readonly
  />
  <button type="submit">Submit</button>
</form>

<script>
  document
    .getElementById("readonly-form")
    .addEventListener("submit", function (event) {
      event.preventDefault();
      const datetimeValue = document.getElementById("submission-datetime").value;
      alert("Submitted datetime: " + datetimeValue);
    });
</script>

When the form is submitted, the alert box will display the datetime value, even though the input field is read-only.

Styling a Read-Only Datetime Input

You can use CSS to visually indicate that a datetime input field is read-only.

<style>
  input[readonly] {
    background-color: #eee;
    color: #777;
    border: 1px solid #ccc;
    cursor: not-allowed;
  }
</style>

<form>
  <label for="styled-datetime">Styled Datetime:</label>
  <input
    type="datetime"
    id="styled-datetime"
    name="styled-datetime"
    value="2024-09-01T09:15:00"
    readonly
  />
</form>

This CSS will change the background color, text color, border, and cursor style of the read-only datetime input field to provide a visual cue to the user.

Real-World Applications

The readOnly property for datetime input fields is useful in various scenarios:

  • Displaying Non-Editable Dates: Showing fixed event dates that should not be changed by the user.
  • Showing Timestamps: Displaying the creation or modification time of a record.
  • Restricting User Input: Preventing users from altering automatically generated or system-defined datetime values.
  • Conditional Editability: Making a datetime field read-only based on user roles or permissions.

Accessibility Considerations

  • Provide Visual Cues: Use CSS to clearly indicate that a datetime input field is read-only, helping users understand that the field is not editable.
  • Use aria-readonly: Enhance accessibility by using the aria-readonly attribute to explicitly state the read-only status for assistive technologies.

Best Practices

  • Consistency: Maintain a consistent visual style for read-only fields throughout your application.
  • User Feedback: Provide clear feedback or instructions when a user attempts to interact with a read-only field.
  • Validation: Ensure that the readOnly attribute is correctly set and handled in both the client-side and server-side validation logic.

Browser Support

The readOnly property is supported by all major browsers.

Conclusion

The HTML readOnly property offers a straightforward way to create non-editable datetime input fields. By using this attribute, you can enhance form usability, ensure data integrity, and provide a better user experience. Whether you need to display fixed dates, timestamps, or restrict user input, the readOnly property is a valuable tool for creating robust and user-friendly web forms.