window.onload = function() { intialiseValidation(); }; function intialiseValidation() { var fields = getElementsByClassName(document, 'formfield'); for (var i = 0; i < fields.length; ++i) { var el = fields[i]; el.onchange = function() { for (var i = 0; i < this.onchangeFuncs.length; ++i) this.onchangeFuncs[i](); }; el.onclick = function() { for (var i = 0; i < this.onclickFuncs.length; ++i) this.onclickFuncs[i](); }; if (!el.onchangeFuncs) el.onchangeFuncs = new Array(); el.onchangeFuncs.push(validateField); } } function validateField(el) { // TODO: Check field matches style } function validateForm() { // TODO: Check all required fields filled return true; } function getElementsByClassName(node, classname) { var a = []; var re = new RegExp('\\b' + classname + '\\b'); var els = node.getElementsByTagName("*"); for (var i = 0, j = els.length; i < j; ++i) { if (re.test(els[i].className)) a.push(els[i]); } return a; }