WebUIValidation.js
上传用户:wenllgg125
上传日期:2020-04-09
资源大小:7277k
文件大小:14k
源码类别:

SCSI/ASPI

开发平台:

Others

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