HTML novalidate Attribute

The HTML novalidate attribute specifies that form data should not be validated when the form is submitted. This boolean attribute disables the browser's built-in validation for form controls like required, pattern, min, max, and input type validations.

Syntax

Following is the syntax for the novalidate attribute −

<form novalidate>
   <!-- form elements -->
</form>

The novalidate attribute is a boolean attribute, meaning its presence alone enables the functionality. You can write it as novalidate, novalidate="", or novalidate="novalidate".

How It Works

When the novalidate attribute is present on a form element, the browser skips all client-side validation checks during form submission. This includes −

  • Required field validation − Fields marked with required won't show error messages

  • Input type validation − Email, URL, number inputs won't be validated for correct format

  • Pattern validation − Custom regex patterns specified in pattern attribute are ignored

  • Min/Max validation − Numeric and date range validations are bypassed

Example − Form Without novalidate

First, let's see how form validation works normally without the novalidate attribute −

<!DOCTYPE html>
<html>
<head>
   <title>Form Validation Example</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
   <h2>Normal Form Validation</h2>
   <form action="/submit" method="post">
      <p>
         <label for="name">Name (required):</label><br>
         <input type="text" id="name" name="name" required style="padding: 5px; margin: 5px 0;">
      </p>
      <p>
         <label for="email">Email (required):</label><br>
         <input type="email" id="email" name="email" required style="padding: 5px; margin: 5px 0;">
      </p>
      <input type="submit" value="Submit" style="padding: 8px 16px; background: #007bff; color: white; border: none; cursor: pointer;">
   </form>
</body>
</html>

In this form, trying to submit without filling required fields or with invalid email format will show browser validation messages.

Example − Form With novalidate

Now let's see the same form with the novalidate attribute −

<!DOCTYPE html>
<html>
<head>
   <title>Form with novalidate Attribute</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
   <h2>Form with novalidate Attribute</h2>
   <form action="/submit" method="post" novalidate>
      <p>
         <label for="name2">Name (required):</label><br>
         <input type="text" id="name2" name="name" required style="padding: 5px; margin: 5px 0;">
      </p>
      <p>
         <label for="email2">Email (required):</label><br>
         <input type="email" id="email2" name="email" required style="padding: 5px; margin: 5px 0;">
      </p>
      <input type="submit" value="Submit" style="padding: 8px 16px; background: #28a745; color: white; border: none; cursor: pointer;">
   </form>
   <p style="color: #666; font-size: 14px;">This form will submit even with empty or invalid fields.</p>
</body>
</html>

With the novalidate attribute, this form will submit successfully even with empty required fields or invalid email format, bypassing all client-side validation.

Dynamic novalidate Control

You can dynamically add or remove the novalidate attribute using JavaScript −

Example

<!DOCTYPE html>
<html>
<head>
   <title>Dynamic novalidate Control</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
   <h2>Toggle Form Validation</h2>
   <form id="myForm" action="/submit" method="post">
      <p>
         <label for="username">Username (required):</label><br>
         <input type="text" id="username" name="username" required style="padding: 5px; margin: 5px 0;">
      </p>
      <p>
         <label for="userEmail">Email (required):</label><br>
         <input type="email" id="userEmail" name="email" required style="padding: 5px; margin: 5px 0;">
      </p>
      <input type="submit" value="Submit" style="padding: 8px 16px; background: #007bff; color: white; border: none; cursor: pointer; margin-right: 10px;">
   </form>
   <br>
   <button onclick="toggleValidation()" style="padding: 8px 16px; background: #6c757d; color: white; border: none; cursor: pointer;">Toggle Validation</button>
   <p id="status">Validation: <span style="color: green;">Enabled</span></p>
   <script>
      function toggleValidation() {
         var form = document.getElementById('myForm');
         var status = document.getElementById('status');
         
         if (form.hasAttribute('novalidate')) {
            form.removeAttribute('novalidate');
            status.innerHTML = 'Validation: <span style="color: green;">Enabled</span>';
         } else {
            form.setAttribute('novalidate', '');
            status.innerHTML = 'Validation: <span style="color: red;">Disabled</span>';
         }
      }
   </script>
</body>
</html>

This example allows you to toggle validation on and off. When validation is disabled, the form submits without checking required fields or email format.

Toggle Form Validation

Username (required): [input field]
Email (required): [input field]
[Submit] 

[Toggle Validation]
Validation: Enabled

Common Use Cases

The novalidate attribute is useful in several scenarios −

  • Draft saving − Allow users to save incomplete forms as drafts

  • Custom validation − Implement your own validation logic using JavaScript

  • Testing − Disable validation during development and testing phases

  • Progressive enhancement − Handle validation on the server side for better accessibility

Browser Compatibility

The novalidate attribute is supported in all modern browsers including Chrome, Firefox, Safari, Edge, and Internet Explorer 10+. It's part of the HTML5 specification and widely supported.

Conclusion

The novalidate attribute provides developers control over when form validation occurs by disabling browser's built-in validation. While useful for specific scenarios like draft saving or custom validation, remember that client-side validation is primarily for user experience − server-side validation should always be implemented for security.

Updated on: 2026-03-16T21:38:54+05:30

354 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements