I'm using forms basic validation to check if email is correct format, then the data is sent by Ajax where it checks if email address is already in use and did the user select country/state or left default values in select boxes.
But for HTML5 form validation to be done submit event is needed, upon clicking submit if it passes that basic form validation Ajax operation is performed, but then when results come in I would like to use the same browser tooltips for interface consistency (and well I like how they look).
So is there a way to make them show up, I was unable to find if there is some special event for them or something like firing submit event but stopping it right away. Right now the field only gets a red edge and error message appears on hovering mouse over it, while the tooltip shows on again clicking submit button.
Also for browsers that don't have native tooltips(in my case Safari) I'm using Webshims Lib and it acts exactly the same as in Chrome and Firefox.
As most people say you have to use
input.setCustomValidity("message")
.The problem here is that you can't check that validation within the
submit
event, since you need to do an ajax call and then setsetCustomValidity
asynchronously.So basically you have to use the
change
event of the input field and make the ajax call on every change. Or remove the submit button and use theclick
event of a normal button, check the unique email in the ajax call and then call submit through javascript.See an example of the last option using jQuery:
Checkout this link ( Provide custom validation messages using setCustomValidity in HTML 5 pages ).
In the above link, he used "input" type is number and oninput he called the validation function. Let me know is this what you are looking for.
Here's a nice live example that custom validates/gives feedback on a form input.
The basic javascript looks like:
HTML:
You can find an answer at this link: How to force a html5 form validation without submitting it via jQuery
Basically, you find a submit button and call click on it:
You can also change validation message after checking if email address is in use or not and then force form validation as above:
You can use setCustomValidity with for the element if the condition is false ( you can do it inside any event handler such as keypress or click ). If the input is NOT valid, SUBMIT. This will trigger the browser's message tooltip.
I thought
.checkValidity()
would do the trick, but it doesn't trigger the UI.It sounds like
.reportValidity()
is going to do what you want. http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#dom-cva-reportvalidityI don't know if any browsers implement it yet though :/