Skip to content

Instantly share code, notes, and snippets.

@rainmakerho
Last active August 21, 2017 08:49
Show Gist options
  • Save rainmakerho/00ac3af3deb09f593b6bc9ea18a313ab to your computer and use it in GitHub Desktop.
Save rainmakerho/00ac3af3deb09f593b6bc9ea18a313ab to your computer and use it in GitHub Desktop.

Revisions

  1. rainmakerho revised this gist Aug 21, 2017. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions webuivalidation.js
    Original file line number Diff line number Diff line change
    @@ -259,6 +259,7 @@ function ValidatorConvert(op, dataType, val) {
    }
    }
    function ValidatorCompare(operand1, operand2, operator, val) {
    val.type = val.getAttribute("type");
    var dataType = val.type;
    var op1, op2;
    if ((op1 = ValidatorConvert(operand1, dataType, val)) == null)
    @@ -286,6 +287,7 @@ function CompareValidatorEvaluateIsValid(val) {
    val.controltovalidate = val.getAttribute('controltovalidate');
    val.valuetocompare = val.getAttribute('valuetocompare');
    val.operator = val.getAttribute('operator');
    val.controltocompare = val.getAttribute('controltocompare');
    var value = ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length == 0)
    return true;
  2. rainmakerho revised this gist Aug 21, 2017. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion webuivalidation.js
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,3 @@
    //fix for ie & chrome
    var Page_ValidationVer = "125";
    var Page_IsValid = true;
    var Page_BlockSubmit = false;
    @@ -284,6 +283,9 @@ function ValidatorCompare(operand1, operand2, operator, val) {
    }
    }
    function CompareValidatorEvaluateIsValid(val) {
    val.controltovalidate = val.getAttribute('controltovalidate');
    val.valuetocompare = val.getAttribute('valuetocompare');
    val.operator = val.getAttribute('operator');
    var value = ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length == 0)
    return true;
    @@ -324,6 +326,7 @@ function ValidatorTrim(s) {
    return (m == null) ? "" : m[1];
    }
    function RequiredFieldValidatorEvaluateIsValid(val) {
    if (val.getAttribute('enabled') == "False") return true
    return (ValidatorTrim(ValidatorGetValue(val.controltovalidate)) != ValidatorTrim(val.initialvalue))
    }
    function RangeValidatorEvaluateIsValid(val) {
  3. rainmakerho created this gist Aug 18, 2017.
    419 changes: 419 additions & 0 deletions webuivalidation.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,419 @@
    //fix for ie & chrome
    var Page_ValidationVer = "125";
    var Page_IsValid = true;
    var Page_BlockSubmit = false;
    function ValidatorUpdateDisplay(val) {
    if (typeof(val.display) == "string") {
    if (val.display == "None") {
    return;
    }
    if (val.display == "Dynamic") {
    val.style.display = val.isvalid ? "none" : "inline";
    return;
    }
    }
    val.style.visibility = val.isvalid ? "hidden" : "visible";
    }
    function ValidatorUpdateIsValid() {
    var i;
    for (i = 0; i < Page_Validators.length; i++) {
    if (!Page_Validators[i].isvalid) {
    Page_IsValid = false;
    return;
    }
    }
    Page_IsValid = true;
    }
    function ValidatorHookupControlID(controlID, val) {
    if (typeof(controlID) != "string") {
    return;
    }
    var ctrl = document.all[controlID];
    if (typeof(ctrl) != "undefined") {
    ValidatorHookupControl(ctrl, val);
    }
    else {
    val.isvalid = true;
    val.enabled = false;
    }
    }
    function ValidatorHookupControl(control, val) {
    if (typeof(control.tagName) == "undefined" && typeof(control.length) == "number") {
    var i;
    for (i = 0; i < control.length; i++) {
    var inner = control[i];
    if (typeof(inner.value) == "string") {
    ValidatorHookupControl(inner, val);
    }
    }
    return;
    }
    else if (control.tagName != "INPUT" && control.tagName != "TEXTAREA" && control.tagName != "SELECT") {
    var i;
    for (i = 0; i < control.children.length; i++) {
    ValidatorHookupControl(control.children[i], val);
    }
    return;
    }
    else {
    if (typeof(control.Validators) == "undefined") {
    control.Validators = new Array;
    var ev;
    if (control.type == "radio") {
    ev = control.onclick;
    } else {
    ev = control.onchange;
    }
    if (typeof(ev) == "function" ) {
    ev = ev.toString();
    ev = ev.substring(ev.indexOf("{") + 1, ev.lastIndexOf("}"));
    }
    else {
    ev = "";
    }
    var func = new Function("ValidatorOnChange(); " + ev);
    if (control.type == "radio") {
    control.onclick = func;
    } else {
    control.onchange = func;
    }
    }
    control.Validators[control.Validators.length] = val;
    }
    }
    function ValidatorGetValue(id) {
    var control;
    control = document.all[id];
    if (typeof(control.value) == "string") {
    return control.value;
    }
    if (typeof(control.tagName) == "undefined" && typeof(control.length) == "number") {
    var j;
    for (j=0; j < control.length; j++) {
    var inner = control[j];
    if (typeof(inner.value) == "string" && (inner.type != "radio" || inner.status == true)) {
    return inner.value;
    }
    }
    }
    else {
    return ValidatorGetValueRecursive(control);
    }
    return "";
    }
    function ValidatorGetValueRecursive(control)
    {
    if (typeof(control.value) == "string" && (control.type != "radio" || control.status == true)) {
    return control.value;
    }
    var i, val;
    for (i = 0; i<control.children.length; i++) {
    val = ValidatorGetValueRecursive(control.children[i]);
    if (val != "") return val;
    }
    return "";
    }
    function Page_ClientValidate() {
    var i;
    for (i = 0; i < Page_Validators.length; i++) {
    ValidatorValidate(Page_Validators[i]);
    }
    ValidatorUpdateIsValid();
    ValidationSummaryOnSubmit();
    Page_BlockSubmit = !Page_IsValid;
    return Page_IsValid;
    }
    function ValidatorCommonOnSubmit() {
    var result = !Page_BlockSubmit;
    Page_BlockSubmit = false;
    event.returnValue = result;
    return result;
    }
    function ValidatorEnable(val, enable) {
    val.enabled = (enable != false);
    ValidatorValidate(val);
    ValidatorUpdateIsValid();
    }
    function ValidatorOnChange() {
    var vals = event.srcElement.Validators;
    var i;
    for (i = 0; i < vals.length; i++) {
    ValidatorValidate(vals[i]);
    }
    ValidatorUpdateIsValid();
    }
    function ValidatorValidate(val) {
    val.isvalid = true;
    if (val.enabled != false) {
    var evafun = val.evaluationfunction;
    if(evafun == undefined)
    evafun = val.getAttribute('evaluationfunction');
    if(typeof(evafun) == "string")
    evafun = window[evafun];

    if (typeof(evafun ) == "function") {
    val.evaluationfunction = evafun;
    val.controltovalidate = val.getAttribute('controltovalidate');
    val.initialvalue = val.getAttribute('initialvalue');
    val.display = val.getAttribute("display");
    val.isvalid = evafun(val);
    }
    }
    ValidatorUpdateDisplay(val);
    }

    function ValidatorOnLoad() {
    if (typeof(Page_Validators) == "undefined")
    return;
    var i, val;
    for (i = 0; i < Page_Validators.length; i++) {
    val = Page_Validators[i];
    if (typeof(val.getAttribute('evaluationfunction')) == "string") {
    eval("val.evaluationfunction = " + val.getAttribute('evaluationfunction') + ";");
    }
    if (typeof(val.isvalid) == "string") {
    if (val.isvalid == "False") {
    val.isvalid = false;
    Page_IsValid = false;
    }
    else {
    val.isvalid = true;
    }
    } else {
    val.isvalid = true;
    }
    if (typeof(val.enabled) == "string") {
    val.enabled = (val.enabled != "False");
    }
    ValidatorHookupControlID(val.getAttribute('controltovalidate'), val);
    ValidatorHookupControlID(val.getAttribute('controlhookup'), val);
    }
    Page_ValidationActive = true;
    }
    function ValidatorConvert(op, dataType, val) {
    function GetFullYear(year) {
    return (year + parseInt(val.century)) - ((year < val.cutoffyear) ? 0 : 100);
    }
    var num, cleanInput, m, exp;
    if (dataType == "Integer") {
    exp = /^\s*[-\+]?\d+\s*$/;
    if (op.match(exp) == null)
    return null;
    num = parseInt(op, 10);
    return (isNaN(num) ? null : num);
    }
    else if(dataType == "Double") {
    exp = new RegExp("^\\s*([-\\+])?(\\d+)?(\\" + val.decimalchar + "(\\d+))?\\s*$");
    m = op.match(exp);
    if (m == null)
    return null;
    cleanInput = m[1] + (m[2].length>0 ? m[2] : "0") + "." + m[4];
    num = parseFloat(cleanInput);
    return (isNaN(num) ? null : num);
    }
    else if (dataType == "Currency") {
    exp = new RegExp("^\\s*([-\\+])?(((\\d+)\\" + val.groupchar + ")*)(\\d+)"
    + ((val.digits > 0) ? "(\\" + val.decimalchar + "(\\d{1," + val.digits + "}))?" : "")
    + "\\s*$");
    m = op.match(exp);
    if (m == null)
    return null;
    var intermed = m[2] + m[5] ;
    cleanInput = m[1] + intermed.replace(new RegExp("(\\" + val.groupchar + ")", "g"), "") + ((val.digits > 0) ? "." + m[7] : 0);
    num = parseFloat(cleanInput);
    return (isNaN(num) ? null : num);
    }
    else if (dataType == "Date") {
    var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-/]|\\. ?)(\\d{1,2})\\4(\\d{1,2})\\s*$");
    m = op.match(yearFirstExp);
    var day, month, year;
    if (m != null && (m[2].length == 4 || val.dateorder == "ymd")) {
    day = m[6];
    month = m[5];
    year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10))
    }
    else {
    if (val.dateorder == "ymd"){
    return null;
    }
    var yearLastExp = new RegExp("^\\s*(\\d{1,2})([-/]|\\. ?)(\\d{1,2})\\2((\\d{4})|(\\d{2}))\\s*$");
    m = op.match(yearLastExp);
    if (m == null) {
    return null;
    }
    if (val.dateorder == "mdy") {
    day = m[3];
    month = m[1];
    }
    else {
    day = m[1];
    month = m[3];
    }
    year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10))
    }
    month -= 1;
    var date = new Date(year, month, day);
    return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()) ? date.valueOf() : null;
    }
    else {
    return op.toString();
    }
    }
    function ValidatorCompare(operand1, operand2, operator, val) {
    var dataType = val.type;
    var op1, op2;
    if ((op1 = ValidatorConvert(operand1, dataType, val)) == null)
    return false;
    if (operator == "DataTypeCheck")
    return true;
    if ((op2 = ValidatorConvert(operand2, dataType, val)) == null)
    return true;
    switch (operator) {
    case "NotEqual":
    return (op1 != op2);
    case "GreaterThan":
    return (op1 > op2);
    case "GreaterThanEqual":
    return (op1 >= op2);
    case "LessThan":
    return (op1 < op2);
    case "LessThanEqual":
    return (op1 <= op2);
    default:
    return (op1 == op2);
    }
    }
    function CompareValidatorEvaluateIsValid(val) {
    var value = ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length == 0)
    return true;
    var compareTo = "";
    if (null == document.all[val.controltocompare]) {
    if (typeof(val.valuetocompare) == "string") {
    compareTo = val.valuetocompare;
    }
    }
    else {
    compareTo = ValidatorGetValue(val.controltocompare);
    }
    return ValidatorCompare(value, compareTo, val.operator, val);
    }
    function CustomValidatorEvaluateIsValid(val) {
    var value = "";
    if (typeof(val.controltovalidate) == "string") {
    value = ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length == 0)
    return true;
    }
    var args = { Value:value, IsValid:true };
    if (typeof(val.getAttribute("clientvalidationfunction")) == "string") {
    eval(val.getAttribute("clientvalidationfunction") + "(val, args) ;");
    }
    return args.IsValid;
    }
    function RegularExpressionValidatorEvaluateIsValid(val) {
    var value = ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length == 0)
    return true;
    var rx = new RegExp(val.validationexpression);
    var matches = rx.exec(value);
    return (matches != null && value == matches[0]);
    }
    function ValidatorTrim(s) {
    var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
    return (m == null) ? "" : m[1];
    }
    function RequiredFieldValidatorEvaluateIsValid(val) {
    return (ValidatorTrim(ValidatorGetValue(val.controltovalidate)) != ValidatorTrim(val.initialvalue))
    }
    function RangeValidatorEvaluateIsValid(val) {
    var value = ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length == 0)
    return true;
    return (ValidatorCompare(value, val.minimumvalue, "GreaterThanEqual", val) &&
    ValidatorCompare(value, val.maximumvalue, "LessThanEqual", val));
    }
    function ValidationSummaryOnSubmit() {
    if (typeof(Page_ValidationSummaries) == "undefined")
    return;
    var summary, sums, s;
    for (sums = 0; sums < Page_ValidationSummaries.length; sums++) {
    summary = Page_ValidationSummaries[sums];
    summary.style.display = "none";
    if (!Page_IsValid) {
    if (summary.getAttribute("showsummary") != "False") {
    summary.style.display = "";
    if (typeof(summary.displaymode) != "string") {
    summary.displaymode = "BulletList";
    }
    switch (summary.displaymode) {
    case "List":
    headerSep = "<br>";
    first = "";
    pre = "";
    post = "<br>";
    final = "";
    break;
    case "BulletList":
    default:
    headerSep = "";
    first = "<ul>";
    pre = "<li>";
    post = "</li>";
    final = "</ul>";
    break;
    case "SingleParagraph":
    headerSep = " ";
    first = "";
    pre = "";
    post = " ";
    final = "<br>";
    break;
    }
    s = "";
    if (typeof(summary.headertext) == "string") {
    s += summary.headertext + headerSep;
    }
    s += first;
    for (i=0; i<Page_Validators.length; i++) {
    Page_Validators[i].errormessage = Page_Validators[i].getAttribute("errormessage");
    if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage ) == "string") {
    s += pre + Page_Validators[i].errormessage + post;
    }
    }
    s += final;
    summary.innerHTML = s;
    window.scrollTo(0,0);
    }
    summary.showmessagebox = summary.getAttribute("showmessagebox");
    if (summary.showmessagebox == "True") {
    s = "";
    summary.headertext = summary.getAttribute("headertext");
    if (typeof(summary.headertext) == "string") {
    s += summary.headertext + "<BR>";
    }
    for (i=0; i<Page_Validators.length; i++) {
    Page_Validators[i].errormessage = Page_Validators[i].getAttribute("errormessage");
    if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
    switch (summary.displaymode) {
    case "List":
    s += Page_Validators[i].errormessage + "<BR>";
    break;
    case "BulletList":
    default:
    s += " - " + Page_Validators[i].errormessage + "<BR>";
    break;
    case "SingleParagraph":
    s += Page_Validators[i].errormessage + " ";
    break;
    }
    }
    }
    span = document.createElement("SPAN");
    span.innerHTML = s;
    s = span.innerText;
    alert(s);
    }
    }
    }
    }