I just found an old script developed some years ago that performs form validation without using jQuery or other JavaScript libraries. I think it might be of some historical interest, so I post it here:
var errors = {
name: "Please enter your name",
email: "Not a valid email address. Email address format: name@domain.extension.",
address: "Please enter your address",
phone: "Not a valid phone number. Phone number format: nnn.nnn.nnnn.",
errorbg: "#ffc",
errorborder: "2px solid #f00",
showError: function (message) {
var form = document.forms[0];
var p = document.createElement("p");
p.className = "error";
p.appendChild(document.createTextNode(message));
form.appendChild(p);
}
};
var warning = {
email: "Email address format: name@domain.extension.",
phone: "Phone number format: nnn.nnn.nnnn.",
showEmail: function () {
var datalist = document.getElementById("data-list");
var li1 = datalist.getElementsByTagName("li")[1];
var p = document.createElement("p");
p.className = "warning";
p.appendChild(document.createTextNode(this.email));
li1.appendChild(p);
},
showPhone: function () {
var datalist = document.getElementById("data-list");
var li2 = datalist.getElementsByTagName("li")[3];
var p = document.createElement("p");
p.className = "warning";
p.appendChild(document.createTextNode(this.phone));
li2.appendChild(p);
}
};
function checkForm() {
var name = document.getElementById("name").value;
if (name.length == 0) {
errors.showError(errors.name);
var hook1 = document.getElementById("name");
hook1.style.background = errors.errorbg;
hook1.style.border = errors.errorborder;
}
var email = document.getElementById("email").value;
var re =/^[a-z0-9_+.-]+\@([a-z0-9]+\.)+[a-z0-9]{2,4}$/i;
if (!email.match(re)) {
errors.showError(errors.email);
var hook2 = document.getElementById("email");
hook2.style.background = errors.errorbg;
hook2.style.border = errors.errorborder;
}
var address = document.getElementById("address").value;
if (address.length == 0) {
errors.showError(errors.address);
var hook3 = document.getElementById("address");
hook3.style.background = errors.errorbg;
hook3.style.border = errors.errorborder;
}
var phone = document.getElementById("phone").value;
var re2 = /(\d{3}).(\d{3}).(\d{4})/;
if (!phone.match(re2)) {
errors.showError(errors.phone);
var hook4 = document.getElementById("phone");
hook4.style.background = errors.errorbg;
hook4.style.border = errors.errorborder;
}
if (name.length > 0 && email.match(re) && address.length > 0
&& phone.match(re2) ) {
return true;
}
else {
return false;
}
}
function showResults() {
var form = document.forms[0];
var results = document.createElement("div");
results.id = "results";
results.innerHTML = "<div class='topright'><div class='bottomleft'><div class='bottomright'>" + "Your data have been saved." +
"</div></div></div>";
form.appendChild(results);
}
window.onload = function() {
var dataform = document.getElementById("data");
dataform.action = "javascript:showResults()";
dataform.onsubmit = checkForm;
var hook5 = document.getElementById("showemail");
hook5.href = "javascript: warning.showEmail()";
var hook6 = document.getElementById("showphone");
hook6.href = "javascript: warning.showPhone()";
}
The interesting thing to note here is that I used object literals to store error and warning messages. Using object literals is surely a good and easy way to store such a data type within a script.