gyorgy@0: /* gyorgy@0: ------------------------------------------------------------------------- gyorgy@0: JavaScript Form Validator (gen_validatorv4.js) gyorgy@0: Version 4.0 gyorgy@0: Copyright (C) 2003-2011 JavaScript-Coder.com. All rights reserved. gyorgy@0: You can freely use this script in your Web pages. gyorgy@0: You may adapt this script for your own needs, provided these opening credit gyorgy@0: lines are kept intact. gyorgy@0: gyorgy@0: The Form validation script is distributed free from JavaScript-Coder.com gyorgy@0: For updates, please visit: gyorgy@0: http://www.javascript-coder.com/html-form/javascript-form-validation.phtml gyorgy@0: gyorgy@0: Questions & comments please send to form.val (at) javascript-coder.com gyorgy@0: ------------------------------------------------------------------------- gyorgy@0: */ gyorgy@0: gyorgy@0: function Validator(frmname) gyorgy@0: { gyorgy@0: this.validate_on_killfocus = false; gyorgy@0: this.formobj = document.forms[frmname]; gyorgy@0: if (!this.formobj) gyorgy@0: { gyorgy@0: alert("Error: couldnot get Form object " + frmname); gyorgy@0: return; gyorgy@0: } gyorgy@0: if (this.formobj.onsubmit) gyorgy@0: { gyorgy@0: this.formobj.old_onsubmit = this.formobj.onsubmit; gyorgy@0: this.formobj.onsubmit = null; gyorgy@0: } gyorgy@0: else gyorgy@0: { gyorgy@0: this.formobj.old_onsubmit = null; gyorgy@0: } gyorgy@0: this.formobj._sfm_form_name = frmname; gyorgy@0: gyorgy@0: this.formobj.onsubmit = form_submit_handler; gyorgy@0: this.addValidation = add_validation; gyorgy@0: gyorgy@0: this.formobj.addnlvalidations = new Array(); gyorgy@0: this.addAddnlValidationFunction = add_addnl_vfunction; gyorgy@0: this.formobj.runAddnlValidations = run_addnl_validations; gyorgy@0: this.setAddnlValidationFunction = set_addnl_vfunction;//for backward compatibility gyorgy@0: gyorgy@0: gyorgy@0: this.clearAllValidations = clear_all_validations; gyorgy@0: this.focus_disable_validations = false; gyorgy@0: gyorgy@0: document.error_disp_handler = new sfm_ErrorDisplayHandler(); gyorgy@0: gyorgy@0: this.EnableOnPageErrorDisplay = validator_enable_OPED; gyorgy@0: this.EnableOnPageErrorDisplaySingleBox = validator_enable_OPED_SB; gyorgy@0: gyorgy@0: this.show_errors_together = false; gyorgy@0: this.EnableMsgsTogether = sfm_enable_show_msgs_together; gyorgy@0: document.set_focus_onerror = true; gyorgy@0: this.EnableFocusOnError = sfm_validator_enable_focus; gyorgy@0: gyorgy@0: this.formobj.error_display_loc = 'right'; gyorgy@0: this.SetMessageDisplayPos = sfm_validator_message_disp_pos; gyorgy@0: gyorgy@0: this.formobj.DisableValidations = sfm_disable_validations; gyorgy@0: this.formobj.validatorobj = this; gyorgy@0: } gyorgy@0: gyorgy@0: gyorgy@0: function sfm_validator_enable_focus(enable) gyorgy@0: { gyorgy@0: document.set_focus_onerror = enable; gyorgy@0: } gyorgy@0: gyorgy@0: function add_addnl_vfunction() gyorgy@0: { gyorgy@0: var proc = gyorgy@0: { gyorgy@0: }; gyorgy@0: proc.func = arguments[0]; gyorgy@0: proc.arguments = []; gyorgy@0: gyorgy@0: for (var i = 1; i < arguments.length; i++) gyorgy@0: { gyorgy@0: proc.arguments.push(arguments[i]); gyorgy@0: } gyorgy@0: this.formobj.addnlvalidations.push(proc); gyorgy@0: } gyorgy@0: gyorgy@0: function set_addnl_vfunction(functionname) gyorgy@0: { gyorgy@0: if(functionname.constructor == String) gyorgy@0: { gyorgy@0: alert("Pass the function name like this: validator.setAddnlValidationFunction(DoCustomValidation)\n "+ gyorgy@0: "rather than passing the function name as string"); gyorgy@0: return; gyorgy@0: } gyorgy@0: this.addAddnlValidationFunction(functionname); gyorgy@0: } gyorgy@0: gyorgy@0: function run_addnl_validations() gyorgy@0: { gyorgy@0: var ret = true; gyorgy@0: for (var f = 0; f < this.addnlvalidations.length; f++) gyorgy@0: { gyorgy@0: var proc = this.addnlvalidations[f]; gyorgy@0: var args = proc.arguments || []; gyorgy@0: if (!proc.func.apply(null, args)) gyorgy@0: { gyorgy@0: ret = false; gyorgy@0: } gyorgy@0: } gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function sfm_set_focus(objInput) gyorgy@0: { gyorgy@0: if (document.set_focus_onerror) gyorgy@0: { gyorgy@0: if (!objInput.disabled && objInput.type != 'hidden') gyorgy@0: { gyorgy@0: objInput.focus(); gyorgy@0: } gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: function sfm_disable_validations() gyorgy@0: { gyorgy@0: if (this.old_onsubmit) gyorgy@0: { gyorgy@0: this.onsubmit = this.old_onsubmit; gyorgy@0: } gyorgy@0: else gyorgy@0: { gyorgy@0: this.onsubmit = null; gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: function sfm_enable_show_msgs_together() gyorgy@0: { gyorgy@0: this.show_errors_together = true; gyorgy@0: this.formobj.show_errors_together = true; gyorgy@0: } gyorgy@0: gyorgy@0: function sfm_validator_message_disp_pos(pos) gyorgy@0: { gyorgy@0: this.formobj.error_display_loc = pos; gyorgy@0: } gyorgy@0: gyorgy@0: function clear_all_validations() gyorgy@0: { gyorgy@0: for (var itr = 0; itr < this.formobj.elements.length; itr++) gyorgy@0: { gyorgy@0: this.formobj.elements[itr].validationset = null; gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: function form_submit_handler() gyorgy@0: { gyorgy@0: var bRet = true; gyorgy@0: document.error_disp_handler.clear_msgs(); gyorgy@0: for (var itr = 0; itr < this.elements.length; itr++) gyorgy@0: { gyorgy@0: if (this.elements[itr].validationset && !this.elements[itr].validationset.validate()) gyorgy@0: { gyorgy@0: bRet = false; gyorgy@0: } gyorgy@0: if (!bRet && !this.show_errors_together) gyorgy@0: { gyorgy@0: break; gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: if (this.show_errors_together || bRet && !this.show_errors_together) gyorgy@0: { gyorgy@0: if (!this.runAddnlValidations()) gyorgy@0: { gyorgy@0: bRet = false; gyorgy@0: } gyorgy@0: } gyorgy@0: if (!bRet) gyorgy@0: { gyorgy@0: document.error_disp_handler.FinalShowMsg(); gyorgy@0: return false; gyorgy@0: } gyorgy@0: return true; gyorgy@0: } gyorgy@0: gyorgy@0: function add_validation(itemname, descriptor, errstr) gyorgy@0: { gyorgy@0: var condition = null; gyorgy@0: if (arguments.length > 3) gyorgy@0: { gyorgy@0: condition = arguments[3]; gyorgy@0: } gyorgy@0: if (!this.formobj) gyorgy@0: { gyorgy@0: alert("Error: The form object is not set properly"); gyorgy@0: return; gyorgy@0: } //if gyorgy@0: var itemobj = this.formobj[itemname]; gyorgy@0: gyorgy@0: if (itemobj.length && isNaN(itemobj.selectedIndex)) gyorgy@0: //for radio button; don't do for 'select' item gyorgy@0: { gyorgy@0: itemobj = itemobj[0]; gyorgy@0: } gyorgy@0: if (!itemobj) gyorgy@0: { gyorgy@0: alert("Error: Couldnot get the input object named: " + itemname); gyorgy@0: return; gyorgy@0: } gyorgy@0: if (true == this.validate_on_killfocus) gyorgy@0: { gyorgy@0: itemobj.onblur = handle_item_on_killfocus; gyorgy@0: } gyorgy@0: if (!itemobj.validationset) gyorgy@0: { gyorgy@0: itemobj.validationset = new ValidationSet(itemobj, this.show_errors_together); gyorgy@0: } gyorgy@0: itemobj.validationset.add(descriptor, errstr, condition); gyorgy@0: itemobj.validatorobj = this; gyorgy@0: } gyorgy@0: gyorgy@0: function handle_item_on_killfocus() gyorgy@0: { gyorgy@0: if (this.validatorobj.focus_disable_validations == true) gyorgy@0: { gyorgy@0: /* gyorgy@0: To avoid repeated looping message boxes gyorgy@0: */ gyorgy@0: this.validatorobj.focus_disable_validations = false; gyorgy@0: return false; gyorgy@0: } gyorgy@0: gyorgy@0: if (null != this.validationset) gyorgy@0: { gyorgy@0: document.error_disp_handler.clear_msgs(); gyorgy@0: if (false == this.validationset.validate()) gyorgy@0: { gyorgy@0: document.error_disp_handler.FinalShowMsg(); gyorgy@0: return false; gyorgy@0: } gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: function validator_enable_OPED() gyorgy@0: { gyorgy@0: document.error_disp_handler.EnableOnPageDisplay(false); gyorgy@0: } gyorgy@0: gyorgy@0: function validator_enable_OPED_SB() gyorgy@0: { gyorgy@0: document.error_disp_handler.EnableOnPageDisplay(true); gyorgy@0: } gyorgy@0: gyorgy@0: function sfm_ErrorDisplayHandler() gyorgy@0: { gyorgy@0: this.msgdisplay = new AlertMsgDisplayer(); gyorgy@0: this.EnableOnPageDisplay = edh_EnableOnPageDisplay; gyorgy@0: this.ShowMsg = edh_ShowMsg; gyorgy@0: this.FinalShowMsg = edh_FinalShowMsg; gyorgy@0: this.all_msgs = new Array(); gyorgy@0: this.clear_msgs = edh_clear_msgs; gyorgy@0: } gyorgy@0: gyorgy@0: function edh_clear_msgs() gyorgy@0: { gyorgy@0: this.msgdisplay.clearmsg(this.all_msgs); gyorgy@0: this.all_msgs = new Array(); gyorgy@0: } gyorgy@0: gyorgy@0: function edh_FinalShowMsg() gyorgy@0: { gyorgy@0: if (this.all_msgs.length == 0) gyorgy@0: { gyorgy@0: return; gyorgy@0: } gyorgy@0: this.msgdisplay.showmsg(this.all_msgs); gyorgy@0: } gyorgy@0: gyorgy@0: function edh_EnableOnPageDisplay(single_box) gyorgy@0: { gyorgy@0: if (true == single_box) gyorgy@0: { gyorgy@0: this.msgdisplay = new SingleBoxErrorDisplay(); gyorgy@0: } gyorgy@0: else gyorgy@0: { gyorgy@0: this.msgdisplay = new DivMsgDisplayer(); gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: function edh_ShowMsg(msg, input_element) gyorgy@0: { gyorgy@0: var objmsg = new Array(); gyorgy@0: objmsg["input_element"] = input_element; gyorgy@0: objmsg["msg"] = msg; gyorgy@0: this.all_msgs.push(objmsg); gyorgy@0: } gyorgy@0: gyorgy@0: function AlertMsgDisplayer() gyorgy@0: { gyorgy@0: this.showmsg = alert_showmsg; gyorgy@0: this.clearmsg = alert_clearmsg; gyorgy@0: } gyorgy@0: gyorgy@0: function alert_clearmsg(msgs) gyorgy@0: { gyorgy@0: gyorgy@0: } gyorgy@0: gyorgy@0: function alert_showmsg(msgs) gyorgy@0: { gyorgy@0: var whole_msg = ""; gyorgy@0: var first_elmnt = null; gyorgy@0: for (var m = 0; m < msgs.length; m++) gyorgy@0: { gyorgy@0: if (null == first_elmnt) gyorgy@0: { gyorgy@0: first_elmnt = msgs[m]["input_element"]; gyorgy@0: } gyorgy@0: whole_msg += msgs[m]["msg"] + "\n"; gyorgy@0: } gyorgy@0: gyorgy@0: alert(whole_msg); gyorgy@0: gyorgy@0: if (null != first_elmnt) gyorgy@0: { gyorgy@0: sfm_set_focus(first_elmnt); gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: function sfm_show_error_msg(msg, input_elmt) gyorgy@0: { gyorgy@0: document.error_disp_handler.ShowMsg(msg, input_elmt); gyorgy@0: } gyorgy@0: gyorgy@0: function SingleBoxErrorDisplay() gyorgy@0: { gyorgy@0: this.showmsg = sb_div_showmsg; gyorgy@0: this.clearmsg = sb_div_clearmsg; gyorgy@0: } gyorgy@0: gyorgy@0: function sb_div_clearmsg(msgs) gyorgy@0: { gyorgy@0: var divname = form_error_div_name(msgs); gyorgy@0: sfm_show_div_msg(divname, ""); gyorgy@0: } gyorgy@0: gyorgy@0: function sb_div_showmsg(msgs) gyorgy@0: { gyorgy@0: var whole_msg = ""; gyorgy@0: var divname = form_error_div_name(msgs); gyorgy@0: var anc_name = divname + "_loc"; gyorgy@0: whole_msg = "" + whole_msg; gyorgy@0: gyorgy@0: sfm_show_div_msg(divname, whole_msg); gyorgy@0: gyorgy@0: window.location.hash = anc_name; gyorgy@0: } gyorgy@0: gyorgy@0: function form_error_div_name(msgs) gyorgy@0: { gyorgy@0: var input_element = null; gyorgy@0: gyorgy@0: for (var m in msgs) gyorgy@0: { gyorgy@0: input_element = msgs[m]["input_element"]; gyorgy@0: if (input_element) gyorgy@0: { gyorgy@0: break; gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: var divname = ""; gyorgy@0: if (input_element) gyorgy@0: { gyorgy@0: divname = input_element.form._sfm_form_name + "_errorloc"; gyorgy@0: } gyorgy@0: gyorgy@0: return divname; gyorgy@0: } gyorgy@0: gyorgy@0: function sfm_show_div_msg(divname,msgstring) gyorgy@0: { gyorgy@0: if(divname.length<=0) return false; gyorgy@0: gyorgy@0: if(document.layers) gyorgy@0: { gyorgy@0: divlayer = document.layers[divname]; gyorgy@0: if(!divlayer){return;} gyorgy@0: divlayer.document.open(); gyorgy@0: divlayer.document.write(msgstring); gyorgy@0: divlayer.document.close(); gyorgy@0: } gyorgy@0: else gyorgy@0: if(document.all) gyorgy@0: { gyorgy@0: divlayer = document.all[divname]; gyorgy@0: if(!divlayer){return;} gyorgy@0: divlayer.innerHTML=msgstring; gyorgy@0: } gyorgy@0: else gyorgy@0: if(document.getElementById) gyorgy@0: { gyorgy@0: divlayer = document.getElementById(divname); gyorgy@0: if(!divlayer){return;} gyorgy@0: divlayer.innerHTML =msgstring; gyorgy@0: } gyorgy@0: divlayer.style.visibility="visible"; gyorgy@0: return false; gyorgy@0: } gyorgy@0: gyorgy@0: function DivMsgDisplayer() gyorgy@0: { gyorgy@0: this.showmsg = div_showmsg; gyorgy@0: this.clearmsg = div_clearmsg; gyorgy@0: } gyorgy@0: gyorgy@0: function div_clearmsg(msgs) gyorgy@0: { gyorgy@0: for (var m in msgs) gyorgy@0: { gyorgy@0: var divname = element_div_name(msgs[m]["input_element"]); gyorgy@0: show_div_msg(divname, ""); gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: function element_div_name(input_element) gyorgy@0: { gyorgy@0: var divname = input_element.form._sfm_form_name + "_" + input_element.name + "_errorloc"; gyorgy@0: gyorgy@0: divname = divname.replace(/[\[\]]/gi, ""); gyorgy@0: gyorgy@0: return divname; gyorgy@0: } gyorgy@0: gyorgy@0: function div_showmsg(msgs) gyorgy@0: { gyorgy@0: var whole_msg; gyorgy@0: var first_elmnt = null; gyorgy@0: for (var m in msgs) gyorgy@0: { gyorgy@0: if (null == first_elmnt) gyorgy@0: { gyorgy@0: first_elmnt = msgs[m]["input_element"]; gyorgy@0: } gyorgy@0: var divname = element_div_name(msgs[m]["input_element"]); gyorgy@0: show_div_msg(divname, msgs[m]["msg"]); gyorgy@0: } gyorgy@0: if (null != first_elmnt) gyorgy@0: { gyorgy@0: sfm_set_focus(first_elmnt); gyorgy@0: } gyorgy@0: } gyorgy@0: gyorgy@0: function show_div_msg(divname, msgstring) gyorgy@0: { gyorgy@0: if (divname.length <= 0) return false; gyorgy@0: gyorgy@0: if (document.layers) gyorgy@0: { gyorgy@0: divlayer = document.layers[divname]; gyorgy@0: if (!divlayer) gyorgy@0: { gyorgy@0: return; gyorgy@0: } gyorgy@0: divlayer.document.open(); gyorgy@0: divlayer.document.write(msgstring); gyorgy@0: divlayer.document.close(); gyorgy@0: } gyorgy@0: else if (document.all) gyorgy@0: { gyorgy@0: divlayer = document.all[divname]; gyorgy@0: if (!divlayer) gyorgy@0: { gyorgy@0: return; gyorgy@0: } gyorgy@0: divlayer.innerHTML = msgstring; gyorgy@0: } gyorgy@0: else if (document.getElementById) gyorgy@0: { gyorgy@0: divlayer = document.getElementById(divname); gyorgy@0: if (!divlayer) gyorgy@0: { gyorgy@0: return; gyorgy@0: } gyorgy@0: divlayer.innerHTML = msgstring; gyorgy@0: } gyorgy@0: divlayer.style.visibility = "visible"; gyorgy@0: } gyorgy@0: gyorgy@0: function ValidationDesc(inputitem, desc, error, condition) gyorgy@0: { gyorgy@0: this.desc = desc; gyorgy@0: this.error = error; gyorgy@0: this.itemobj = inputitem; gyorgy@0: this.condition = condition; gyorgy@0: this.validate = vdesc_validate; gyorgy@0: } gyorgy@0: gyorgy@0: function vdesc_validate() gyorgy@0: { gyorgy@0: if (this.condition != null) gyorgy@0: { gyorgy@0: if (!eval(this.condition)) gyorgy@0: { gyorgy@0: return true; gyorgy@0: } gyorgy@0: } gyorgy@0: if (!validateInput(this.desc, this.itemobj, this.error)) gyorgy@0: { gyorgy@0: this.itemobj.validatorobj.focus_disable_validations = true; gyorgy@0: sfm_set_focus(this.itemobj); gyorgy@0: return false; gyorgy@0: } gyorgy@0: gyorgy@0: return true; gyorgy@0: } gyorgy@0: gyorgy@0: function ValidationSet(inputitem, msgs_together) gyorgy@0: { gyorgy@0: this.vSet = new Array(); gyorgy@0: this.add = add_validationdesc; gyorgy@0: this.validate = vset_validate; gyorgy@0: this.itemobj = inputitem; gyorgy@0: this.msgs_together = msgs_together; gyorgy@0: } gyorgy@0: gyorgy@0: function add_validationdesc(desc, error, condition) gyorgy@0: { gyorgy@0: this.vSet[this.vSet.length] = gyorgy@0: new ValidationDesc(this.itemobj, desc, error, condition); gyorgy@0: } gyorgy@0: gyorgy@0: function vset_validate() gyorgy@0: { gyorgy@0: var bRet = true; gyorgy@0: for (var itr = 0; itr < this.vSet.length; itr++) gyorgy@0: { gyorgy@0: bRet = bRet && this.vSet[itr].validate(); gyorgy@0: if (!bRet && !this.msgs_together) gyorgy@0: { gyorgy@0: break; gyorgy@0: } gyorgy@0: } gyorgy@0: return bRet; gyorgy@0: } gyorgy@0: gyorgy@0: /* checks the validity of an email address entered gyorgy@0: * returns true or false gyorgy@0: */ gyorgy@0: function validateEmail(email) gyorgy@0: { gyorgy@0: var splitted = email.match("^(.+)@(.+)$"); gyorgy@0: if (splitted == null) return false; gyorgy@0: if (splitted[1] != null) gyorgy@0: { gyorgy@0: var regexp_user = /^\"?[\w-_\.]*\"?$/; gyorgy@0: if (splitted[1].match(regexp_user) == null) return false; gyorgy@0: } gyorgy@0: if (splitted[2] != null) gyorgy@0: { gyorgy@0: var regexp_domain = /^[\w-\.]*\.[A-Za-z]{2,4}$/; gyorgy@0: if (splitted[2].match(regexp_domain) == null) gyorgy@0: { gyorgy@0: var regexp_ip = /^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/; gyorgy@0: if (splitted[2].match(regexp_ip) == null) return false; gyorgy@0: } // if gyorgy@0: return true; gyorgy@0: } gyorgy@0: return false; gyorgy@0: } gyorgy@0: gyorgy@0: function TestComparison(objValue, strCompareElement, strvalidator, strError) gyorgy@0: { gyorgy@0: var bRet = true; gyorgy@0: var objCompare = null; gyorgy@0: if (!objValue.form) gyorgy@0: { gyorgy@0: sfm_show_error_msg("Error: No Form object!", objValue); gyorgy@0: return false gyorgy@0: } gyorgy@0: objCompare = objValue.form.elements[strCompareElement]; gyorgy@0: if (!objCompare) gyorgy@0: { gyorgy@0: sfm_show_error_msg("Error: Element with name" + strCompareElement + " not found !", objValue); gyorgy@0: return false; gyorgy@0: } gyorgy@0: gyorgy@0: var objval_value = objValue.value; gyorgy@0: var objcomp_value = objCompare.value; gyorgy@0: gyorgy@0: if (strvalidator != "eqelmnt" && strvalidator != "neelmnt") gyorgy@0: { gyorgy@0: objval_value = objval_value.replace(/\,/g, ""); gyorgy@0: objcomp_value = objcomp_value.replace(/\,/g, ""); gyorgy@0: gyorgy@0: if (isNaN(objval_value)) gyorgy@0: { gyorgy@0: sfm_show_error_msg(objValue.name + ": Should be a number ", objValue); gyorgy@0: return false; gyorgy@0: } //if gyorgy@0: if (isNaN(objcomp_value)) gyorgy@0: { gyorgy@0: sfm_show_error_msg(objCompare.name + ": Should be a number ", objCompare); gyorgy@0: return false; gyorgy@0: } //if gyorgy@0: } //if gyorgy@0: var cmpstr = ""; gyorgy@0: switch (strvalidator) gyorgy@0: { gyorgy@0: case "eqelmnt": gyorgy@0: { gyorgy@0: if (objval_value != objcomp_value) gyorgy@0: { gyorgy@0: cmpstr = " should be equal to "; gyorgy@0: bRet = false; gyorgy@0: } //if gyorgy@0: break; gyorgy@0: } //case gyorgy@0: case "ltelmnt": gyorgy@0: { gyorgy@0: if (eval(objval_value) >= eval(objcomp_value)) gyorgy@0: { gyorgy@0: cmpstr = " should be less than "; gyorgy@0: bRet = false; gyorgy@0: } gyorgy@0: break; gyorgy@0: } //case gyorgy@0: case "leelmnt": gyorgy@0: { gyorgy@0: if (eval(objval_value) > eval(objcomp_value)) gyorgy@0: { gyorgy@0: cmpstr = " should be less than or equal to"; gyorgy@0: bRet = false; gyorgy@0: } gyorgy@0: break; gyorgy@0: } //case gyorgy@0: case "gtelmnt": gyorgy@0: { gyorgy@0: if (eval(objval_value) <= eval(objcomp_value)) gyorgy@0: { gyorgy@0: cmpstr = " should be greater than"; gyorgy@0: bRet = false; gyorgy@0: } gyorgy@0: break; gyorgy@0: } //case gyorgy@0: case "geelmnt": gyorgy@0: { gyorgy@0: if (eval(objval_value) < eval(objcomp_value)) gyorgy@0: { gyorgy@0: cmpstr = " should be greater than or equal to"; gyorgy@0: bRet = false; gyorgy@0: } gyorgy@0: break; gyorgy@0: } //case gyorgy@0: case "neelmnt": gyorgy@0: { gyorgy@0: if (objval_value.length > 0 && objcomp_value.length > 0 && objval_value == objcomp_value) gyorgy@0: { gyorgy@0: cmpstr = " should be different from "; gyorgy@0: bRet = false; gyorgy@0: } //if gyorgy@0: break; gyorgy@0: } gyorgy@0: } //switch gyorgy@0: if (bRet == false) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = objValue.name + cmpstr + objCompare.name; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: } //if gyorgy@0: return bRet; gyorgy@0: } gyorgy@0: gyorgy@0: function TestSelMin(objValue, strMinSel, strError) gyorgy@0: { gyorgy@0: var bret = true; gyorgy@0: var objcheck = objValue.form.elements[objValue.name]; gyorgy@0: var chkcount = 0; gyorgy@0: if (objcheck.length) gyorgy@0: { gyorgy@0: for (var c = 0; c < objcheck.length; c++) gyorgy@0: { gyorgy@0: if (objcheck[c].checked == "1") gyorgy@0: { gyorgy@0: chkcount++; gyorgy@0: } //if gyorgy@0: } //for gyorgy@0: } gyorgy@0: else gyorgy@0: { gyorgy@0: chkcount = (objcheck.checked == "1") ? 1 : 0; gyorgy@0: } gyorgy@0: var minsel = eval(strMinSel); gyorgy@0: if (chkcount < minsel) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = "Please Select atleast" + minsel + " check boxes for" + objValue.name; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: bret = false; gyorgy@0: } gyorgy@0: return bret; gyorgy@0: } gyorgy@0: gyorgy@0: function TestSelMax(objValue, strMaxSel, strError) gyorgy@0: { gyorgy@0: var bret = true; gyorgy@0: var objcheck = objValue.form.elements[objValue.name]; gyorgy@0: var chkcount = 0; gyorgy@0: if (objcheck.length) gyorgy@0: { gyorgy@0: for (var c = 0; c < objcheck.length; c++) gyorgy@0: { gyorgy@0: if (objcheck[c].checked == "1") gyorgy@0: { gyorgy@0: chkcount++; gyorgy@0: } //if gyorgy@0: } //for gyorgy@0: } gyorgy@0: else gyorgy@0: { gyorgy@0: chkcount = (objcheck.checked == "1") ? 1 : 0; gyorgy@0: } gyorgy@0: var maxsel = eval(strMaxSel); gyorgy@0: if (chkcount > maxsel) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = "Please Select atmost " + maxsel + " check boxes for" + objValue.name; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: bret = false; gyorgy@0: } gyorgy@0: return bret; gyorgy@0: } gyorgy@0: gyorgy@0: function IsCheckSelected(objValue, chkValue) gyorgy@0: { gyorgy@0: var selected = false; gyorgy@0: var objcheck = objValue.form.elements[objValue.name]; gyorgy@0: if (objcheck.length) gyorgy@0: { gyorgy@0: var idxchk = -1; gyorgy@0: for (var c = 0; c < objcheck.length; c++) gyorgy@0: { gyorgy@0: if (objcheck[c].value == chkValue) gyorgy@0: { gyorgy@0: idxchk = c; gyorgy@0: break; gyorgy@0: } //if gyorgy@0: } //for gyorgy@0: if (idxchk >= 0) gyorgy@0: { gyorgy@0: if (objcheck[idxchk].checked == "1") gyorgy@0: { gyorgy@0: selected = true; gyorgy@0: } gyorgy@0: } //if gyorgy@0: } gyorgy@0: else gyorgy@0: { gyorgy@0: if (objValue.checked == "1") gyorgy@0: { gyorgy@0: selected = true; gyorgy@0: } //if gyorgy@0: } //else gyorgy@0: return selected; gyorgy@0: } gyorgy@0: gyorgy@0: function TestDontSelectChk(objValue, chkValue, strError) gyorgy@0: { gyorgy@0: var pass = true; gyorgy@0: pass = IsCheckSelected(objValue, chkValue) ? false : true; gyorgy@0: gyorgy@0: if (pass == false) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = "Can't Proceed as you selected " + objValue.name; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: gyorgy@0: } gyorgy@0: return pass; gyorgy@0: } gyorgy@0: gyorgy@0: function TestShouldSelectChk(objValue, chkValue, strError) gyorgy@0: { gyorgy@0: var pass = true; gyorgy@0: gyorgy@0: pass = IsCheckSelected(objValue, chkValue) ? true : false; gyorgy@0: gyorgy@0: if (pass == false) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = "You should select" + objValue.name; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: gyorgy@0: } gyorgy@0: return pass; gyorgy@0: } gyorgy@0: gyorgy@0: function TestRequiredInput(objValue, strError) gyorgy@0: { gyorgy@0: var ret = true; gyorgy@0: if (VWZ_IsEmpty(objValue.value)) gyorgy@0: { gyorgy@0: ret = false; gyorgy@0: } //if gyorgy@0: else if (objValue.getcal && !objValue.getcal()) gyorgy@0: { gyorgy@0: ret = false; gyorgy@0: } gyorgy@0: gyorgy@0: if (!ret) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = objValue.name + " : Required Field"; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: } gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function TestFileExtension(objValue, cmdvalue, strError) gyorgy@0: { gyorgy@0: var ret = false; gyorgy@0: var found = false; gyorgy@0: gyorgy@0: if (objValue.value.length <= 0) gyorgy@0: { //The 'required' validation is not done here gyorgy@0: return true; gyorgy@0: } gyorgy@0: gyorgy@0: var extns = cmdvalue.split(";"); gyorgy@0: for (var i = 0; i < extns.length; i++) gyorgy@0: { gyorgy@0: ext = objValue.value.substr(objValue.value.length - extns[i].length, extns[i].length); gyorgy@0: ext = ext.toLowerCase(); gyorgy@0: if (ext == extns[i]) gyorgy@0: { gyorgy@0: found = true; gyorgy@0: break; gyorgy@0: } gyorgy@0: } gyorgy@0: if (!found) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = objValue.name + " allowed file extensions are: " + cmdvalue; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: ret = false; gyorgy@0: } gyorgy@0: else gyorgy@0: { gyorgy@0: ret = true; gyorgy@0: } gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function TestMaxLen(objValue, strMaxLen, strError) gyorgy@0: { gyorgy@0: var ret = true; gyorgy@0: if (eval(objValue.value.length) > eval(strMaxLen)) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = objValue.name + " : " + strMaxLen + " characters maximum "; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: ret = false; gyorgy@0: } //if gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function TestMinLen(objValue, strMinLen, strError) gyorgy@0: { gyorgy@0: var ret = true; gyorgy@0: if (eval(objValue.value.length) < eval(strMinLen)) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = objValue.name + " : " + strMinLen + " characters minimum "; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: ret = false; gyorgy@0: } //if gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function TestInputType(objValue, strRegExp, strError, strDefaultError) gyorgy@0: { gyorgy@0: var ret = true; gyorgy@0: gyorgy@0: var charpos = objValue.value.search(strRegExp); gyorgy@0: if (objValue.value.length > 0 && charpos >= 0) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = strDefaultError; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: ret = false; gyorgy@0: } //if gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function TestEmail(objValue, strError) gyorgy@0: { gyorgy@0: var ret = true; gyorgy@0: if (objValue.value.length > 0 && !validateEmail(objValue.value)) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = objValue.name + ": Enter a valid Email address "; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: ret = false; gyorgy@0: } //if gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function TestLessThan(objValue, strLessThan, strError) gyorgy@0: { gyorgy@0: var ret = true; gyorgy@0: var obj_value = objValue.value.replace(/\,/g, ""); gyorgy@0: strLessThan = strLessThan.replace(/\,/g, ""); gyorgy@0: gyorgy@0: if (isNaN(obj_value)) gyorgy@0: { gyorgy@0: sfm_show_error_msg(objValue.name + ": Should be a number ", objValue); gyorgy@0: ret = false; gyorgy@0: } //if gyorgy@0: else if (eval(obj_value) >= eval(strLessThan)) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = objValue.name + " : value should be less than " + strLessThan; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: ret = false; gyorgy@0: } //if gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function TestGreaterThan(objValue, strGreaterThan, strError) gyorgy@0: { gyorgy@0: var ret = true; gyorgy@0: var obj_value = objValue.value.replace(/\,/g, ""); gyorgy@0: strGreaterThan = strGreaterThan.replace(/\,/g, ""); gyorgy@0: gyorgy@0: if (isNaN(obj_value)) gyorgy@0: { gyorgy@0: sfm_show_error_msg(objValue.name + ": Should be a number ", objValue); gyorgy@0: ret = false; gyorgy@0: } //if gyorgy@0: else if (eval(obj_value) <= eval(strGreaterThan)) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = objValue.name + " : value should be greater than " + strGreaterThan; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: ret = false; gyorgy@0: } //if gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function TestRegExp(objValue, strRegExp, strError) gyorgy@0: { gyorgy@0: var ret = true; gyorgy@0: if (objValue.value.length > 0 && !objValue.value.match(strRegExp)) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = objValue.name + ": Invalid characters found "; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: ret = false; gyorgy@0: } //if gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function TestDontSelect(objValue, dont_sel_value, strError) gyorgy@0: { gyorgy@0: var ret = true; gyorgy@0: if (objValue.value == null) gyorgy@0: { gyorgy@0: sfm_show_error_msg("Error: dontselect command for non-select Item", objValue); gyorgy@0: ret = false; gyorgy@0: } gyorgy@0: else if (objValue.value == dont_sel_value) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = objValue.name + ": Please Select one option "; gyorgy@0: } //if gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: ret = false; gyorgy@0: } gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function TestSelectOneRadio(objValue, strError) gyorgy@0: { gyorgy@0: var objradio = objValue.form.elements[objValue.name]; gyorgy@0: var one_selected = false; gyorgy@0: for (var r = 0; r < objradio.length; r++) gyorgy@0: { gyorgy@0: if (objradio[r].checked == "1") gyorgy@0: { gyorgy@0: one_selected = true; gyorgy@0: break; gyorgy@0: } gyorgy@0: } gyorgy@0: if (false == one_selected) gyorgy@0: { gyorgy@0: if (!strError || strError.length == 0) gyorgy@0: { gyorgy@0: strError = "Please select one option from " + objValue.name; gyorgy@0: } gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: } gyorgy@0: return one_selected; gyorgy@0: } gyorgy@0: gyorgy@0: function TestSelectRadio(objValue, cmdvalue, strError, testselect) gyorgy@0: { gyorgy@0: var objradio = objValue.form.elements[objValue.name]; gyorgy@0: var selected = false; gyorgy@0: gyorgy@0: for (var r = 0; r < objradio.length; r++) gyorgy@0: { gyorgy@0: if (objradio[r].value == cmdvalue && objradio[r].checked == "1") gyorgy@0: { gyorgy@0: selected = true; gyorgy@0: break; gyorgy@0: } gyorgy@0: } gyorgy@0: if (testselect == true && false == selected || testselect == false && true == selected) gyorgy@0: { gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: return false; gyorgy@0: } gyorgy@0: return true; gyorgy@0: } gyorgy@0: gyorgy@0: gyorgy@0: //* Checks each field in a form gyorgy@0: gyorgy@0: gyorgy@0: function validateInput(strValidateStr, objValue, strError) gyorgy@0: { gyorgy@0: gyorgy@0: var ret = true; gyorgy@0: var epos = strValidateStr.search("="); gyorgy@0: var command = ""; gyorgy@0: var cmdvalue = ""; gyorgy@0: if (epos >= 0) gyorgy@0: { gyorgy@0: command = strValidateStr.substring(0, epos); gyorgy@0: cmdvalue = strValidateStr.substr(epos + 1); gyorgy@0: } gyorgy@0: else gyorgy@0: { gyorgy@0: command = strValidateStr; gyorgy@0: } gyorgy@0: gyorgy@0: switch (command) gyorgy@0: { gyorgy@0: case "req": gyorgy@0: case "required": gyorgy@0: { gyorgy@0: ret = TestRequiredInput(objValue, strError) gyorgy@0: break; gyorgy@0: } gyorgy@0: case "maxlength": gyorgy@0: case "maxlen": gyorgy@0: { gyorgy@0: ret = TestMaxLen(objValue, cmdvalue, strError) gyorgy@0: break; gyorgy@0: } gyorgy@0: case "minlength": gyorgy@0: case "minlen": gyorgy@0: { gyorgy@0: ret = TestMinLen(objValue, cmdvalue, strError) gyorgy@0: break; gyorgy@0: } gyorgy@0: case "alnum": gyorgy@0: case "alphanumeric": gyorgy@0: { gyorgy@0: ret = TestInputType(objValue, "[^A-Za-z0-9]", strError, objValue.name + ": Only alpha-numeric characters allowed "); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "alnum_s": gyorgy@0: case "alphanumeric_space": gyorgy@0: { gyorgy@0: ret = TestInputType(objValue, "[^A-Za-z0-9\\s]", strError, objValue.name + ": Only alpha-numeric characters and space allowed "); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "num": gyorgy@0: case "numeric": gyorgy@0: case "dec": gyorgy@0: case "decimal": gyorgy@0: { gyorgy@0: if (objValue.value.length > 0 && !objValue.value.match(/^[\-\+]?[\d\,]*\.?[\d]*$/)) gyorgy@0: { gyorgy@0: sfm_show_error_msg(strError, objValue); gyorgy@0: ret = false; gyorgy@0: } //if gyorgy@0: break; gyorgy@0: } gyorgy@0: case "alphabetic": gyorgy@0: case "alpha": gyorgy@0: { gyorgy@0: ret = TestInputType(objValue, "[^A-Za-z]", strError, objValue.name + ": Only alphabetic characters allowed "); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "alphabetic_space": gyorgy@0: case "alpha_s": gyorgy@0: { gyorgy@0: ret = TestInputType(objValue, "[^A-Za-z\\s]", strError, objValue.name + ": Only alphabetic characters and space allowed "); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "email": gyorgy@0: { gyorgy@0: ret = TestEmail(objValue, strError); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "lt": gyorgy@0: case "lessthan": gyorgy@0: { gyorgy@0: ret = TestLessThan(objValue, cmdvalue, strError); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "gt": gyorgy@0: case "greaterthan": gyorgy@0: { gyorgy@0: ret = TestGreaterThan(objValue, cmdvalue, strError); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "regexp": gyorgy@0: { gyorgy@0: ret = TestRegExp(objValue, cmdvalue, strError); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "dontselect": gyorgy@0: { gyorgy@0: ret = TestDontSelect(objValue, cmdvalue, strError) gyorgy@0: break; gyorgy@0: } gyorgy@0: case "dontselectchk": gyorgy@0: { gyorgy@0: ret = TestDontSelectChk(objValue, cmdvalue, strError) gyorgy@0: break; gyorgy@0: } gyorgy@0: case "shouldselchk": gyorgy@0: { gyorgy@0: ret = TestShouldSelectChk(objValue, cmdvalue, strError) gyorgy@0: break; gyorgy@0: } gyorgy@0: case "selmin": gyorgy@0: { gyorgy@0: ret = TestSelMin(objValue, cmdvalue, strError); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "selmax": gyorgy@0: { gyorgy@0: ret = TestSelMax(objValue, cmdvalue, strError); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "selone_radio": gyorgy@0: case "selone": gyorgy@0: { gyorgy@0: ret = TestSelectOneRadio(objValue, strError); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "dontselectradio": gyorgy@0: { gyorgy@0: ret = TestSelectRadio(objValue, cmdvalue, strError, false); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "selectradio": gyorgy@0: { gyorgy@0: ret = TestSelectRadio(objValue, cmdvalue, strError, true); gyorgy@0: break; gyorgy@0: } gyorgy@0: //Comparisons gyorgy@0: case "eqelmnt": gyorgy@0: case "ltelmnt": gyorgy@0: case "leelmnt": gyorgy@0: case "gtelmnt": gyorgy@0: case "geelmnt": gyorgy@0: case "neelmnt": gyorgy@0: { gyorgy@0: return TestComparison(objValue, cmdvalue, command, strError); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "req_file": gyorgy@0: { gyorgy@0: ret = TestRequiredInput(objValue, strError); gyorgy@0: break; gyorgy@0: } gyorgy@0: case "file_extn": gyorgy@0: { gyorgy@0: ret = TestFileExtension(objValue, cmdvalue, strError); gyorgy@0: break; gyorgy@0: } gyorgy@0: gyorgy@0: } //switch gyorgy@0: return ret; gyorgy@0: } gyorgy@0: gyorgy@0: function VWZ_IsListItemSelected(listname, value) gyorgy@0: { gyorgy@0: for (var i = 0; i < listname.options.length; i++) gyorgy@0: { gyorgy@0: if (listname.options[i].selected == true && listname.options[i].value == value) gyorgy@0: { gyorgy@0: return true; gyorgy@0: } gyorgy@0: } gyorgy@0: return false; gyorgy@0: } gyorgy@0: gyorgy@0: function VWZ_IsChecked(objcheck, value) gyorgy@0: { gyorgy@0: if (objcheck.length) gyorgy@0: { gyorgy@0: for (var c = 0; c < objcheck.length; c++) gyorgy@0: { gyorgy@0: if (objcheck[c].checked == "1" && objcheck[c].value == value) gyorgy@0: { gyorgy@0: return true; gyorgy@0: } gyorgy@0: } gyorgy@0: } gyorgy@0: else gyorgy@0: { gyorgy@0: if (objcheck.checked == "1") gyorgy@0: { gyorgy@0: return true; gyorgy@0: } gyorgy@0: } gyorgy@0: return false; gyorgy@0: } gyorgy@0: gyorgy@0: function sfm_str_trim(strIn) gyorgy@0: { gyorgy@0: return strIn.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); gyorgy@0: } gyorgy@0: gyorgy@0: function VWZ_IsEmpty(value) gyorgy@0: { gyorgy@0: value = sfm_str_trim(value); gyorgy@0: return (value.length) == 0 ? true : false; gyorgy@0: } gyorgy@0: /* gyorgy@0: Copyright (C) 2003-2011 JavaScript-Coder.com . All rights reserved. gyorgy@0: */