WebUIValidation.js
上传用户:kaisitong
上传日期:2022-01-01
资源大小:3672k
文件大小:14k
源码类别:

OA系统

开发平台:

ASP/ASPX

  1. //<script>
  2. var Page_ValidationVer = "125";
  3. var Page_IsValid = true;
  4. var Page_BlockSubmit = false;
  5. function ValidatorUpdateDisplay(val) {
  6.     if (typeof(val.display) == "string") {    
  7.         if (val.display == "None") {
  8.             return;
  9.         }
  10.         if (val.display == "Dynamic") {
  11.             val.style.display = val.isvalid ? "none" : "inline";
  12.             return;
  13.         }
  14.     }
  15.     val.style.visibility = val.isvalid ? "hidden" : "visible";
  16. }
  17. function ValidatorUpdateIsValid() {
  18.     var i;
  19.     for (i = 0; i < Page_Validators.length; i++) {
  20.         if (!Page_Validators[i].isvalid) {
  21.             Page_IsValid = false;
  22.             return;
  23.         }
  24.    }
  25.    Page_IsValid = true;
  26. }
  27. function ValidatorHookupControlID(controlID, val) {
  28.     if (typeof(controlID) != "string") {
  29.         return;
  30.     }
  31.     var ctrl = document.all[controlID];
  32.     if (typeof(ctrl) != "undefined") {
  33.         ValidatorHookupControl(ctrl, val);
  34.     }
  35.     else {
  36.         val.isvalid = true;
  37.         val.enabled = false;
  38.     }
  39. }
  40. function ValidatorHookupControl(control, val) {
  41.     if (typeof(control.tagName) == "undefined" && typeof(control.length) == "number") {
  42.         var i;
  43.         for (i = 0; i < control.length; i++) {
  44.             var inner = control[i];
  45.             if (typeof(inner.value) == "string") {
  46.                 ValidatorHookupControl(inner, val);
  47.             } 
  48.         }
  49.         return;
  50.     }
  51.     else if (control.tagName != "INPUT" && control.tagName != "TEXTAREA" && control.tagName != "SELECT") {
  52.         var i;
  53.         for (i = 0; i < control.children.length; i++) {
  54.             ValidatorHookupControl(control.children[i], val);
  55.         }
  56.         return;
  57.     }
  58.     else {
  59.         if (typeof(control.Validators) == "undefined") {
  60.             control.Validators = new Array;
  61.             var ev;
  62.             if (control.type == "radio") {
  63.                 ev = control.onclick;
  64.             } else {
  65.                 ev = control.onchange;
  66.             }
  67.             if (typeof(ev) == "function" ) {            
  68.                 ev = ev.toString();
  69.                 ev = ev.substring(ev.indexOf("{") + 1, ev.lastIndexOf("}"));
  70.             }
  71.             else {
  72.                 ev = "";
  73.             }
  74.             var func = new Function("ValidatorOnChange(); " + ev);
  75.             if (control.type == "radio") {
  76.                 control.onclick = func;
  77.             } else {            
  78.                 control.onchange = func;
  79.             }
  80.         }
  81.         control.Validators[control.Validators.length] = val;
  82.     }    
  83. }
  84. function ValidatorGetValue(id) {
  85.     var control;
  86.     control = document.all[id];
  87.     if (typeof(control.value) == "string") {
  88.         return control.value;
  89.     }
  90.     if (typeof(control.tagName) == "undefined" && typeof(control.length) == "number") {
  91.         var j;
  92.         for (j=0; j < control.length; j++) {
  93.             var inner = control[j];
  94.             if (typeof(inner.value) == "string" && (inner.type != "radio" || inner.status == true)) {
  95.                 return inner.value;
  96.             }
  97.         }
  98.     }
  99.     else {
  100.         return ValidatorGetValueRecursive(control);
  101.     }
  102.     return "";
  103. }
  104. function ValidatorGetValueRecursive(control)
  105. {
  106.     if (typeof(control.value) == "string" && (control.type != "radio" || control.status == true)) {
  107.         return control.value;
  108.     }
  109.     var i, val;
  110.     for (i = 0; i<control.children.length; i++) {
  111.         val = ValidatorGetValueRecursive(control.children[i]);
  112.         if (val != "") return val;
  113.     }
  114.     return "";
  115. }
  116. function Page_ClientValidate() {
  117.     var i;
  118.     for (i = 0; i < Page_Validators.length; i++) {
  119.         ValidatorValidate(Page_Validators[i]);
  120.     }
  121.     ValidatorUpdateIsValid();    
  122.     ValidationSummaryOnSubmit();
  123.     Page_BlockSubmit = !Page_IsValid;
  124.     return Page_IsValid;
  125. }
  126. function ValidatorCommonOnSubmit() {
  127.     event.returnValue = !Page_BlockSubmit;
  128.     Page_BlockSubmit = false;
  129. }
  130. function ValidatorEnable(val, enable) {
  131.     val.enabled = (enable != false);
  132.     ValidatorValidate(val);
  133.     ValidatorUpdateIsValid();
  134. }
  135. function ValidatorOnChange() {
  136.     var vals = event.srcElement.Validators;
  137.     var i;
  138.     for (i = 0; i < vals.length; i++) {
  139.         ValidatorValidate(vals[i]);
  140.     }
  141.     ValidatorUpdateIsValid();    
  142. }
  143. function ValidatorValidate(val) {    
  144.     val.isvalid = true;
  145.     if (val.enabled != false) {
  146.         if (typeof(val.evaluationfunction) == "function") {
  147.             val.isvalid = val.evaluationfunction(val); 
  148.         }
  149.     }
  150.     ValidatorUpdateDisplay(val);
  151. }
  152. function ValidatorOnLoad() {
  153.     if (typeof(Page_Validators) == "undefined")
  154.         return;
  155.     var i, val;
  156.     for (i = 0; i < Page_Validators.length; i++) {
  157.         val = Page_Validators[i];
  158.         if (typeof(val.evaluationfunction) == "string") {
  159.             eval("val.evaluationfunction = " + val.evaluationfunction + ";");
  160.         }
  161.         if (typeof(val.isvalid) == "string") {
  162.             if (val.isvalid == "False") {
  163.                 val.isvalid = false;                                
  164.                 Page_IsValid = false;
  165.             } 
  166.             else {
  167.                 val.isvalid = true;
  168.             }
  169.         } else {
  170.             val.isvalid = true;
  171.         }
  172.         if (typeof(val.enabled) == "string") {
  173.             val.enabled = (val.enabled != "False");
  174.         }
  175.         ValidatorHookupControlID(val.controltovalidate, val);
  176.         ValidatorHookupControlID(val.controlhookup, val);
  177.     }
  178.     Page_ValidationActive = true;
  179. }
  180. function ValidatorConvert(op, dataType, val) {
  181.     function GetFullYear(year) {
  182.         return (year + parseInt(val.century)) - ((year < val.cutoffyear) ? 0 : 100);
  183.     }
  184.     var num, cleanInput, m, exp;
  185.     if (dataType == "Integer") {
  186.         exp = /^s*[-+]?d+s*$/;
  187.         if (op.match(exp) == null) 
  188.             return null;
  189.         num = parseInt(op, 10);
  190.         return (isNaN(num) ? null : num);
  191.     }
  192.     else if(dataType == "Double") {
  193.         exp = new RegExp("^\s*([-\+])?(\d+)?(\" + val.decimalchar + "(\d+))?\s*$");
  194.         m = op.match(exp);
  195.         if (m == null)
  196.             return null;
  197.         cleanInput = m[1] + (m[2].length>0 ? m[2] : "0") + "." + m[4];
  198.         num = parseFloat(cleanInput);
  199.         return (isNaN(num) ? null : num);            
  200.     } 
  201.     else if (dataType == "Currency") {
  202.         exp = new RegExp("^\s*([-\+])?(((\d+)\" + val.groupchar + ")*)(\d+)"
  203.                         + ((val.digits > 0) ? "(\" + val.decimalchar + "(\d{1," + val.digits + "}))?" : "")
  204.                         + "\s*$");
  205.         m = op.match(exp);
  206.         if (m == null)
  207.             return null;
  208.         var intermed = m[2] + m[5] ;
  209.         cleanInput = m[1] + intermed.replace(new RegExp("(\" + val.groupchar + ")", "g"), "") + ((val.digits > 0) ? "." + m[7] : 0);
  210.         num = parseFloat(cleanInput);
  211.         return (isNaN(num) ? null : num);            
  212.     }
  213.     else if (dataType == "Date") {
  214.         var yearFirstExp = new RegExp("^\s*((\d{4})|(\d{2}))([-./])(\d{1,2})\4(\d{1,2})\s*$");
  215.         m = op.match(yearFirstExp);
  216.         var day, month, year;
  217.         if (m != null && (m[2].length == 4 || val.dateorder == "ymd")) {
  218.             day = m[6];
  219.             month = m[5];
  220.             year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10))
  221.         }
  222.         else {
  223.             if (val.dateorder == "ymd"){
  224.                 return null;
  225.             }
  226.             var yearLastExp = new RegExp("^\s*(\d{1,2})([-./])(\d{1,2})\2((\d{4})|(\d{2}))\s*$");
  227.             m = op.match(yearLastExp);
  228.             if (m == null) {
  229.                 return null;
  230.             }
  231.             if (val.dateorder == "mdy") {
  232.                 day = m[3];
  233.                 month = m[1];
  234.             }
  235.             else {
  236.                 day = m[1];
  237.                 month = m[3];
  238.             }
  239.             year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10))
  240.         }
  241.         month -= 1;
  242.         var date = new Date(year, month, day);
  243.         return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()) ? date.valueOf() : null;
  244.     }
  245.     else {
  246.         return op.toString();
  247.     }
  248. }
  249. function ValidatorCompare(operand1, operand2, operator, val) {
  250.     var dataType = val.type;
  251.     var op1, op2;
  252.     if ((op1 = ValidatorConvert(operand1, dataType, val)) == null)
  253.         return false;    
  254.     if (operator == "DataTypeCheck")
  255.         return true;
  256.     if ((op2 = ValidatorConvert(operand2, dataType, val)) == null)
  257.         return true;
  258.     switch (operator) {
  259.         case "NotEqual":
  260.             return (op1 != op2);
  261.         case "GreaterThan":
  262.             return (op1 > op2);
  263.         case "GreaterThanEqual":
  264.             return (op1 >= op2);
  265.         case "LessThan":
  266.             return (op1 < op2);
  267.         case "LessThanEqual":
  268.             return (op1 <= op2);
  269.         default:
  270.             return (op1 == op2);            
  271.     }
  272. }
  273. function CompareValidatorEvaluateIsValid(val) {
  274.     var value = ValidatorGetValue(val.controltovalidate);
  275.     if (ValidatorTrim(value).length == 0)
  276.         return true;
  277.     var compareTo = "";
  278.     if (null == document.all[val.controltocompare]) {
  279.         if (typeof(val.valuetocompare) == "string") {
  280.             compareTo = val.valuetocompare;
  281.         }
  282.     }
  283.     else {
  284.         compareTo = ValidatorGetValue(val.controltocompare);
  285.     }
  286.     return ValidatorCompare(value, compareTo, val.operator, val);
  287. }
  288. function CustomValidatorEvaluateIsValid(val) {
  289.     var value = "";
  290.     if (typeof(val.controltovalidate) == "string") {
  291.         value = ValidatorGetValue(val.controltovalidate);
  292.         if (ValidatorTrim(value).length == 0)
  293.             return true;
  294.     }
  295.     var args = { Value:value, IsValid:true };
  296.     if (typeof(val.clientvalidationfunction) == "string") {
  297.         eval(val.clientvalidationfunction + "(val, args) ;");
  298.     }        
  299.     return args.IsValid;
  300. }
  301. function RegularExpressionValidatorEvaluateIsValid(val) {
  302.     var value = ValidatorGetValue(val.controltovalidate);
  303.     if (ValidatorTrim(value).length == 0)
  304.         return true;        
  305.     var rx = new RegExp(val.validationexpression);
  306.     var matches = rx.exec(value);
  307.     return (matches != null && value == matches[0]);
  308. }
  309. function ValidatorTrim(s) {
  310.     var m = s.match(/^s*(S+(s+S+)*)s*$/);
  311.     return (m == null) ? "" : m[1];
  312. }
  313. function RequiredFieldValidatorEvaluateIsValid(val) {
  314.     return (ValidatorTrim(ValidatorGetValue(val.controltovalidate)) != ValidatorTrim(val.initialvalue))
  315. }
  316. function RangeValidatorEvaluateIsValid(val) {
  317.     var value = ValidatorGetValue(val.controltovalidate);
  318.     if (ValidatorTrim(value).length == 0) 
  319.         return true;
  320.     return (ValidatorCompare(value, val.minimumvalue, "GreaterThanEqual", val) &&
  321.             ValidatorCompare(value, val.maximumvalue, "LessThanEqual", val));
  322. }
  323. function ValidationSummaryOnSubmit() {
  324.     if (typeof(Page_ValidationSummaries) == "undefined") 
  325.         return;
  326.     var summary, sums, s;
  327.     for (sums = 0; sums < Page_ValidationSummaries.length; sums++) {
  328.         summary = Page_ValidationSummaries[sums];
  329.         summary.style.display = "none";
  330.         if (!Page_IsValid) {
  331.             if (summary.showsummary != "False") {
  332.                 summary.style.display = "";
  333.                 if (typeof(summary.displaymode) != "string") {
  334.                     summary.displaymode = "BulletList";
  335.                 }
  336.                 switch (summary.displaymode) {
  337.                     case "List":
  338.                         headerSep = "<br>";
  339.                         first = "";
  340.                         pre = "";
  341.                         post = "<br>";
  342.                         final = "";
  343.                         break;
  344.                         
  345.                     case "BulletList":
  346.                     default: 
  347.                         headerSep = "";
  348.                         first = "<ul>";
  349.                         pre = "<li>";
  350.                         post = "</li>";
  351.                         final = "</ul>";
  352.                         break;
  353.                         
  354.                     case "SingleParagraph":
  355.                         headerSep = " ";
  356.                         first = "";
  357.                         pre = "";
  358.                         post = " ";
  359.                         final = "<br>";
  360.                         break;
  361.                 }
  362.                 s = "";
  363.                 if (typeof(summary.headertext) == "string") {
  364.                     s += summary.headertext + headerSep;
  365.                 }
  366.                 s += first;
  367.                 for (i=0; i<Page_Validators.length; i++) {
  368.                     if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
  369.                         s += pre + Page_Validators[i].errormessage + post;
  370.                     }
  371.                 }   
  372.                 s += final;
  373.                 summary.innerHTML = s; 
  374.                 window.scrollTo(0,0);
  375.             }
  376.             if (summary.showmessagebox == "True") {
  377.                 s = "";
  378.                 if (typeof(summary.headertext) == "string") {
  379.                     s += summary.headertext + "<BR>";
  380.                 }
  381.                 for (i=0; i<Page_Validators.length; i++) {
  382.                     if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
  383.                         switch (summary.displaymode) {
  384.                             case "List":
  385.                                 s += Page_Validators[i].errormessage + "<BR>";
  386.                                 break;
  387.                                 
  388.                             case "BulletList":
  389.                             default: 
  390.                                 s += "  - " + Page_Validators[i].errormessage + "<BR>";
  391.                                 break;
  392.                                 
  393.                             case "SingleParagraph":
  394.                                 s += Page_Validators[i].errormessage + " ";
  395.                                 break;
  396.                         }
  397.                     }
  398.                 }
  399.                 span = document.createElement("SPAN");
  400.                 span.innerHTML = s;
  401.                 s = span.innerText;
  402.                 alert(s);
  403.             }
  404.         }
  405.     }
  406. }