Reputation: 31
How does one prevent a validation error message displaying in a form when a user has yet to submit data? And, how to ensure that the error message only displays if the data has been validated as incorrect?
The data is a birth date, in the format dd/mm/yyyy, validated with a Regular Expression.
function myValidator() {
var userBirthDate = document.getElementById("dob").value;
var regexVar = /^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/;
var regexVarTest = regexVar.test(userBirthDate);
var userAge = new Date(userBirthDate.replace(regexVar, "$2-$3-$1"));
var todayDate = (new Date()).getFullYear();
var cutOff19 = new Date();
cutOff19.setFullYear(todayDate - 19);
var cutOff95 = new Date();
cutOff95.setFullYear(todayDate - 95);
var errMsg = document.getElementById("error");
if (!regexVarTest) {
errMsg.innerHTML = "Enter as dd/mm/yyyy";
}
else if (userAge > cutOff19) {
errMsg.innerHTML = "you have to be older than 19";
}
else if (userAge < cutOff95) {
errMsg.innerHTML = "you have to be younger than 95";
}
return userAge;
}
function init() {
var theForm = document.getElementById("theform");
theForm.onsubmit = myValidator();
}
window.onload = init;
<p>
<label for="dob">Birth Date</label>
<input type="text=" name="dob" id="dob" maxlength="10" placeholder="dd/mm/yyyy" pattern="([0-9]{2})\/([0-9]{2})\/([0-9]{4})" required="required" />
<span id="error"></span>
</p>
Upvotes: 0
Views: 59
Reputation:
After your var userBirthDate = document.getElementById("dob").value;
Place all DOB validations inside if
condition as
function myValidator() {
var userBirthDate = document.getElementById("dob").value;
if (userBirthDate) {
...
validation logic
...
}
So that your validations will be fired only if there is some or the data in input
Ref: How to check empty/undefined/null string in JavaScript?
Upvotes: 1