// ---------------------------------------------------------------------- // Javascript form validation routines. // Author: Stephen Poley // // Simple routines to quickly pick up obvious typos. // All validation routines return true if executed by an older browser: // in this case validation must be left to the server. // // Update Jun 2005: discovered that reason IE wasn't setting focus was // due to an IE timing bug. Added 0.1 sec delay to fix. // // Update Oct 2005: minor tidy-up: unused parameter removed // // Update Jun 2006: minor improvements to variable names and layout // ---------------------------------------------------------------------- var nbsp = 160; // non-breaking space char var node_text = 3; // DOM text node-type var emptyString = /^\s*$/ ; var global_valfield; // retain valfield for timer thread var frm; //form variable thats been passed from the html page // -------------------------------------------- // Trim leading/trailing whitespace off string // -------------------------------------------- function trim(str) { return str.replace(/^\s+|\s+$/g, ''); } // -------------------------------------------- //ValidatePresent // Validate if something has been entered // Returns 1 if invalid, 0 if valid // -------------------------------------------- function validatePresent(valfield, required) { // element to be validated if ( frm.elements[valfield].value.length <= 0 && required ) { msg (valfield, "error", "Required"); return 1; } msg (valfield, "", ""); return 0; } // -------------------------------------------- // validates any decimal // Returns 1 if invalid, 0 if valid // -------------------------------------------- function validateDecimal(valfield, required) { // element to be validated if ( frm.elements[valfield].value.length <= 0 && required ) { //required and the field is empty msg (valfield, "error", "Required"); return 1; } else if ( frm.elements[valfield].value.length > 0 ) { // field is not empty so check it var tfld = trim(frm.elements[valfield].value); // value of field with whitespace trimmed off var telnr = /^-?\d+(\.\d+)?$/ ; if (!telnr.test(tfld) && tfld != 0) { msg (valfield, "error", "Not a valid number"); return 1; } msg (valfield, "error", ""); return 0; } msg (valfield, "error", ""); return 0; } // -------------------------------------------- // validates maximum char length // Returns 1 if invalid, 0 if valid // -------------------------------------------- function validateMaxCharlength(valfield, len, required) { // element to be validated if ( frm.elements[valfield].value.length <= 0 ) { //required and the field is empty if (required) { msg (valfield, "error", "Required"); return 1; } else { msg (valfield, "error", ""); return 0; } } else if ( frm.elements[valfield].value.length > 0 ) { // field is not empty so check it if (frm.elements[valfield].value.length > len) { msg (valfield, "error", frm.elements[valfield].value.length + " characters (maximum " + len + ")"); return 1; } msg (valfield, "error", ""); return 0; } //msg (valfield, "error", ""); //return 0; } // -------------------------------------------- // validates minimum char length // Returns 1 if invalid, 0 if valid // -------------------------------------------- function validateMinCharlength(valfield, len, required) { // element to be validated if ( frm.elements[valfield].value.length <= 0 ) { //required and the field is empty if (required) { msg (valfield, "error", "Required"); return 1; } else { msg (valfield, "error", ""); return 0; } } else if ( frm.elements[valfield].value.length > 0 ) { // field is not empty so check it if (frm.elements[valfield].value.length < len) { msg (valfield, "error", frm.elements[valfield].value.length + " characters (minimum " + len + ")"); return 1; } msg (valfield, "error", ""); return 0; } } // -------------------------------------------- // validates maximum char length // Returns 1 if invalid, 0 if valid // DEPRECATED IN FAVOUR OF validateMaxCharlength // -------------------------------------------- function validateCharlength(valfield, len, required) { // element to be validated if ( frm.elements[valfield].value.length <= 0 ) { //required and the field is empty if (required) { msg (valfield, "error", "Required"); return 1; } else { msg (valfield, "error", ""); return 0; } } else if ( frm.elements[valfield].value.length > 0 ) { // field is not empty so check it if (frm.elements[valfield].value.length > len) { msg (valfield, "error", frm.elements[valfield].value.length + " characters (maximum " + len + ")"); return 1; } msg (valfield, "error", ""); return 0; } //msg (valfield, "error", ""); //return 0; } // -------------------------------------------- // validates alpha chars only // Returns 1 if invalid, 0 if valid // -------------------------------------------- function validateAlpha(valfield, required) { // element to be validated if ( frm.elements[valfield].value.length <= 0 ) { //required and the field is empty if (required) { msg (valfield, "error", "Required"); return 1; } else { msg (valfield, "error", ""); return 0; } } else if ( frm.elements[valfield].value.length > 0 ) { // field is not empty so check it var tfld = trim(frm.elements[valfield].value); // value of field with whitespace trimmed off var telnr = /^[a-zA-Z\-\s\']*$/ ; // var telnr = /^[a-zA-Z]*$/ ; if (!telnr.test(tfld) && tfld != 0) { msg (valfield, "error", "Alphabetic characters only"); return 1; } msg (valfield, "error", ""); return 0; } } // -------------------------------------------- // validates any integer value , including negative // Returns 1 if invalid, 0 if valid // -------------------------------------------- function validateInteger(valfield, required) { // element to be validated if ( frm.elements[valfield].value.length <= 0 && required ) { //required and the field is empty msg (valfield, "error", "ERROR: required"); return 1; } else if ( frm.elements[valfield].value.length > 0 ) { // field is not empty so check it var tfld = trim(frm.elements[valfield].value); // value of field with whitespace trimmed off var telnr = /^[-,0-9]*$/ ; if (!telnr.test(tfld) && tfld != 0) { msg (valfield, "error", "ERROR: not a valid integer"); return 1; } msg (valfield, "error", ""); return 0; } msg (valfield, "error", ""); return 0; } // -------------------------------------------- // validates 2 password fields // Returns 1 if invalid, 0 if valid // -------------------------------------------- function validatePass(valfield1, valfield2, len, required) { // element to be validated if ( frm.elements[valfield1].value.length <= 0 && frm.elements[valfield2].value.length <= 0 ) { //both empty if (required) { msg (valfield1, "error", "Required"); msg (valfield2, "error", "Required"); return 1; } else { msg (valfield2, "error", ""); msg (valfield1, "error", ""); return 0; } } else { // one is not empty //check length if (frm.elements[valfield1].value.length < len) { msg (valfield1, "error", "Password is too short, minimum is "+len+" characters"); msg (valfield2, "error", ""); return 1; } else { if ( frm.elements[valfield1].value == frm.elements[valfield2].value ) { msg (valfield2, "error", ""); msg (valfield1, "error", ""); return 0; } else { msg (valfield2, "error", "Entered passwords do not match"); msg (valfield1, "error", ""); return 1; } } } } // -------------------------------------------- // validateEmail // Validate if e-mail address // Returns 1 if invalid, 0 if valid // -------------------------------------------- function validateEmail (valfield, // element to be validated required) // true if required { if ( frm.elements[valfield].value.length <= 0 && required ) { //required and the field is empty msg (valfield, "error", "Required"); return 1; } if ( frm.elements[valfield].value.length > 0 ) { // field is not empty so check it var tfld = trim(frm.elements[valfield].value); // value of field with whitespace trimmed off var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ; if (!email.test(tfld)) { msg (valfield, "error", "Not a valid e-mail address"); return 1; } msg (valfield, "error", ""); return 0; } } // -------------------------------------------- // validateTelnr // Validate telephone number // Permits spaces, hyphens, brackets and leading + // -------------------------------------------- function validateTelnr (valfield, // element to be validated required) // true if required { if ( frm.elements[valfield].value.length <= 0 && required ) { //required and the field is empty msg (valfield, "error", "Required"); return 1; } else if ( frm.elements[valfield].value.length > 0 ) { // field is not empty so check it var tfld = trim(frm.elements[valfield].value); // value of field with whitespace trimmed off var telnr = /^\+?[0-9 ()-]+[0-9]$/ ; if (!telnr.test(tfld)) { msg (valfield, "error", "Not a valid telephone number. Characters permitted are digits, space ()- and leading +"); return 1; } var numdigits = 0; for (var j=0; j='0' && tfld.charAt(j)<='9') numdigits++; if (numdigits<5) { msg (valfield, "error", "" + numdigits + " digits - too short"); return 1; } msg (valfield, "", ""); return 0; } } // -------------------------------------------- // validateAge // Validate person's age // Returns true if OK // -------------------------------------------- function validateAge(valfield, // element to be validated required) { // true if required if ( frm.elements[valfield].value.length <= 0 && required ) { //required and the field is empty msg (valfield, "error", "Required"); return 1; } else if ( !required ) { //not required, if (frm.elements[valfield].value.length > 0 ) {//field is not empty so check it var ageRE = /^[0-9]{1,3}$/ if (!ageRE.test(trim(frm.elements[valfield].value))) { msg (valfield, "error", "Not a valid age"); return 1; } if (frm.elements[valfield].value >= 120 || frm.elements[valfield].value <= 0) { msg (valfield, "error", "Not a valid age"); return 1; } msg (valfield, "", ""); return 0; } else { msg (valfield, "", ""); return 0; } //not required , empty } } // -------------------------------------------- // msg // Display warn/error message in DIV element. // -------------------------------------------- function msg(fld, //element name that has the wrong input msgtype, // class to give element ("warn" or "error") message) // string to display { // setting an empty string can give problems if later set to a // non-empty string, so ensure a space present. (For Mozilla and Opera one could // simply use a space, but IE demands something more, like a non-breaking space.) var dispmessage; if (emptyString.test(message)) dispmessage = String.fromCharCode(nbsp); else dispmessage = message; var elem = document.getElementById("error_" + fld); document.getElementById("error_" + fld).innerHTML = dispmessage; elem.className = msgtype; // set the CSS class to adjust appearance of message } function validateForm(frm_in) { //save the form element from HTML page frm = frm_in; } function CheckEnquiryForm() { var message = ''; if(document.Enquiry.name.value == '') message = message + 'To sumit an enquiry you are required to enter in your name' + "\n"; if(document.Enquiry.emailaddress.value == '') message = message + 'To sumit an enquiry you are required to enter in your email' + "\n"; if(message != '') alert(message); else document.Enquiry.submit(); }