//验证控件的组是不是指定的组 function IsValidationGroupMatch(control, validationGroup) { //如果指定的组没定义或为null,则不必验证,直接返回真 if ((typeof(validationGroup) =="undefined") || (validationGroup ==null)) returntrue; //获取验证控件的组,没定义默认为"" var controlGroup =""; if (typeof(control.validationGroup) =="string") controlGroup = control.validationGroup; //如果相等返回真,不等返回假 return (controlGroup == validationGroup); } //这是本次验证控件所指向的验证函数 //如果待验证控件值不等于初使设定在验证控件中的值时,就OK function RequiredFieldValidatorEvaluateIsValid(val) { //待验证控件的值==初使设定在验证控件中的值,返回为假 //待验证控件的值!=初使设定在验证控件中的值,返回为真 return (ValidatorTrim(ValidatorGetValue(val.controltovalidate)) != ValidatorTrim(val.initialvalue)) } //对该子程序细化一下 //用正则表达式删除前后空格 function ValidatorTrim(s) { //正则表达式 /^开始匹配 \s任何空白字符 *多次 // (\S任何非空白字符 +加上 (\s+\S+)任何空白字符加上任何非空白字符 *)匹配零次或多次 // \s*任何空白字符多次 $/结束匹配 var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //如果m为null则返回"",否则返回第二部分 即(\S+(\s+\S+)*) return (m ==null) ?"" : m[1]; } //获取控件(或组合控件)的值(或内容) function ValidatorGetValue(id) { var control; control = document.getElementById(id); if (typeof(control.value) =="string") //如果控件值为字符串型,则可以返回了 return control.value; //否则再深入其子控件 return ValidatorGetValueRecursive(control); } //获取组合控件的子控件值 function ValidatorGetValueRecursive(control) { //如果控件值为字符串型,或者 控件不是选项框并且控件的检测项为真(?) if (typeof(control.value) =="string"&& (control.type !="radio"|| control.checked ==true)) return control.value; var i, val; //对该控件的各个子项进行逐个取值 for (i =0; i<control.childNodes.length; i++) { //递归调用本身 val = ValidatorGetValueRecursive(control.childNodes[i]); //当返回值不为空时,就可以结束了 if (val !="") return val; } return""; } //更新验证控件的显示状态 function ValidatorUpdateDisplay(val) { if (typeof(val.display) =="string") //如果显示方式有设置的 { if (val.display =="None") //设为None则不操作立即返回 return; if (val.display =="Dynamic") { //如果设置为动态的 //则显示状态与验证状态一致? val.style.display = val.isvalid ?"none" : "inline"; return; } } //对于还没有设置显示方式的 if ((navigator.userAgent.indexOf("Mac") >-1) && (navigator.userAgent.indexOf("MSIE") >-1)) val.style.display ="inline"; //显示状态与验证状态一致 val.style.visibility = val.isvalid ?"hidden" : "visible"; }
我对这段程序还不理解,为什么设置一个显示不显示还要这么繁?
还有一个子程序是更新整个页面的验证状态:
//更新整个页面的验证状态 function ValidatorUpdateIsValid() { Page_IsValid = AllValidatorsValid(Page_Validators); } //检查所有验证控件,一个未通过,就返回不通过 function AllValidatorsValid(validators) { if ((typeof(validators) !="undefined") && (validators !=null)) { var i; for (i =0; i < validators.length; i++) { if (!validators[i].isvalid) returnfalse; } } returntrue; }