a way to check validity of HTML5 forms?

JavascriptFormsHtmlDom

Javascript Problem Overview


Is it possible to check if an input element of an html5 form is valid based on the pattern I set for it? I know the psuedo class stuff.. but i'm hoping something like: document.getElementById('petitionName').valid can return true or false..

I really hope I don't need to create javascript to re-verify this stuff.

Javascript Solutions


Solution 1 - Javascript

there are two ways to check the validity.

  1. inputElement.checkValidity() returns true or false
  2. inputElement.validity returns the validity-state object. inputElement.validity.valid returns true/false

Instead of using keyup, you can also use the 'input' event. All browser, which have implemented the constraint validation API, have also implemented the input-event.

If you are using option 1 above, Opera has a bug here and will show its validation hint. So you should use 2.

I have created a html5 forms library, which implements all unknown features to incapable browsers + fixes issues in HTML5 browsers. So everything works like defined in the spec, but it's built on top of jQuery. (http://afarkas.github.com/webshim/demos/index.html).

Solution 2 - Javascript

You can use the pattern attribute.

It will validate it client side, so no need to validate it again client side.

Example

jsFiddle.

But, make sure you do it again server side.

Also note, because browser compatibility is quite poor right now, JavaScript is the norm for validating client side.

Solution 3 - Javascript

To complement, you can check each element was invalid and, for example, set a focus in the first invalid element, by this code:

var Form = document.getElementById('FormID');
if (Form.checkValidity() == false) {
    var list = Form.querySelectorAll(':invalid');
    for (var item of list) {
        item.focus();
    }
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHenryView Question on Stackoverflow
Solution 1 - Javascriptalexander farkasView Answer on Stackoverflow
Solution 2 - JavascriptalexView Answer on Stackoverflow
Solution 3 - JavascriptLeandro CarvalhoView Answer on Stackoverflow