Basic form validation with JavaScript

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.

Leave a Reply

Note: Only a member of this blog may post a comment.