locked
Validation of textbox RRS feed

  • Question

  • User1390435587 posted

    I used the wrong type of validator, I should of used   'RegularExpressionValidator' from the toolbox.

    Fixed now

     

    Peter W

     

    Hello all

    Working in VWD and I have one textbox, I have created a custom range validator for the textbox by dragging the same onto the working area of the screen from the toolbox. In the properties for that validator I have added my custom validation, in this case an email address valid. Trouble is when it runs I get a syntax error in the webresource_2.axd file on the line below (bold and undelined and near the bottom of the code), I have no idea how to move forward. I tried another validation (for time) but it stopped at the same point

    The message is Microsoft Jscript Runtime error: Syntax error

     

    The HTML looks like this

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:CustomValidator ID="CustomValidator1" runat="server"
                ClientValidationFunction="^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"
                ControlToValidate="TextBox1" ErrorMessage="CustomValidator"></asp:CustomValidator>


     

     The full code from the file is below but the failed line is

           eval(val.clientvalidationfunction + "(val, args) ;");

     

    Any help would be appreciated

     

    thanks

     

    Peter

     

    var Page_ValidationVer = "125";
    var Page_IsValid = true;
    var Page_BlockSubmit = false;
    var Page_InvalidControlToBeFocused = null;
    var Page_TextTypes = /^(text|password|file|search|tel|url|email|number|range|color|datetime|date|month|week|time|datetime-local)$/i;
    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;
            }
        }
        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) {
                    return false;
                }
            }
        }
        return true;
    }
    function ValidatorHookupControlID(controlID, val) {
        if (typeof(controlID) != "string") {
            return;
        }
        var ctrl = document.getElementById(controlID);
        if ((typeof(ctrl) != "undefined") && (ctrl != null)) {
            ValidatorHookupControl(ctrl, val);
        }
        else {
            val.isvalid = true;
            val.enabled = false;
        }
    }
    function ValidatorHookupControl(control, val) {
        if (typeof(control.tagName) != "string") {
            return;  
        }
        if (control.tagName != "INPUT" && control.tagName != "TEXTAREA" && control.tagName != "SELECT") {
            var i;
            for (i = 0; i < control.childNodes.length; i++) {
                ValidatorHookupControl(control.childNodes[i], val);
            }
            return;
        }
        else {
            if (typeof(control.Validators) == "undefined") {
                control.Validators = new Array;
                var eventType;
                if (control.type == "radio") {
                    eventType = "onclick";
                } else {
                    eventType = "onchange";
                    if (typeof(val.focusOnError) == "string" && val.focusOnError == "t") {
                        ValidatorHookupEvent(control, "onblur", "ValidatedControlOnBlur(event); ");
                    }
                }
                ValidatorHookupEvent(control, eventType, "ValidatorOnChange(event); ");
                if (Page_TextTypes.test(control.type)) {
                    ValidatorHookupEvent(control, "onkeypress", 
                        "event = event || window.event; if (!ValidatedTextBoxOnKeyPress(event)) { event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return false; } ");
                }
            }
            control.Validators[control.Validators.length] = val;
        }
    }
    function ValidatorHookupEvent(control, eventType, functionPrefix) {
        var ev = control[eventType];
        if (typeof(ev) == "function") {
            ev = ev.toString();
            ev = ev.substring(ev.indexOf("{") + 1, ev.lastIndexOf("}"));
        }
        else {
            ev = "";
        }
        control[eventType] = new Function("event", functionPrefix + " " + ev);
    }
    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 Page_ClientValidate(validationGroup) {
        Page_InvalidControlToBeFocused = null;
        if (typeof(Page_Validators) == "undefined") {
            return true;
        }
        var i;
        for (i = 0; i < Page_Validators.length; i++) {
            ValidatorValidate(Page_Validators[i], validationGroup, null);
        }
        ValidatorUpdateIsValid();
        ValidationSummaryOnSubmit(validationGroup);
        Page_BlockSubmit = !Page_IsValid;
        return Page_IsValid;
    }
    function ValidatorCommonOnSubmit() {
        Page_InvalidControlToBeFocused = null;
        var result = !Page_BlockSubmit;
        if ((typeof(window.event) != "undefined") && (window.event != null)) {
            window.event.returnValue = result;
        }
        Page_BlockSubmit = false;
        return result;
    }
    function ValidatorEnable(val, enable) {
        val.enabled = (enable != false);
        ValidatorValidate(val);
        ValidatorUpdateIsValid();
    }
    function ValidatorOnChange(event) {
        event = event || window.event;
        Page_InvalidControlToBeFocused = null;
        var targetedControl;
        if ((typeof(event.srcElement) != "undefined") && (event.srcElement != null)) {
            targetedControl = event.srcElement;
        }
        else {
            targetedControl = event.target;
        }
        var vals;
        if (typeof(targetedControl.Validators) != "undefined") {
            vals = targetedControl.Validators;
        }
        else {
            if (targetedControl.tagName.toLowerCase() == "label") {
                targetedControl = document.getElementById(targetedControl.htmlFor);
                vals = targetedControl.Validators;
            }
        }
        if (vals) {
            for (var i = 0; i < vals.length; i++) {
                ValidatorValidate(vals[i], null, event);
            }
        }
        ValidatorUpdateIsValid();
    }
    function ValidatedTextBoxOnKeyPress(event) {
        event = event || window.event;
        if (event.keyCode == 13) {
            ValidatorOnChange(event);
            var vals;
            if ((typeof(event.srcElement) != "undefined") && (event.srcElement != null)) {
                vals = event.srcElement.Validators;
            }
            else {
                vals = event.target.Validators;
            }
            return AllValidatorsValid(vals);
        }
        return true;
    }
    function ValidatedControlOnBlur(event) {
        event = event || window.event;
        var control;
        if ((typeof(event.srcElement) != "undefined") && (event.srcElement != null)) {
            control = event.srcElement;
        }
        else {
            control = event.target;
        }
        if ((typeof(control) != "undefined") && (control != null) && (Page_InvalidControlToBeFocused == control)) {
            control.focus();
            Page_InvalidControlToBeFocused = null;
        }
    }
    function ValidatorValidate(val, validationGroup, event) {
        val.isvalid = true;
        if ((typeof(val.enabled) == "undefined" || val.enabled != false) && IsValidationGroupMatch(val, validationGroup)) {
            if (typeof(val.evaluationfunction) == "function") {
                val.isvalid = val.evaluationfunction(val);
                if (!val.isvalid && Page_InvalidControlToBeFocused == null &&
                    typeof(val.focusOnError) == "string" && val.focusOnError == "t") {
                    ValidatorSetFocus(val, event);
                }
            }
        }
        ValidatorUpdateDisplay(val);
    }
    function ValidatorSetFocus(val, event) {
        var ctrl;
        if (typeof(val.controlhookup) == "string") {
            var eventCtrl;
            if ((typeof(event) != "undefined") && (event != null)) {
                if ((typeof(event.srcElement) != "undefined") && (event.srcElement != null)) {
                    eventCtrl = event.srcElement;
                }
                else {
                    eventCtrl = event.target;
                }
            }
            if ((typeof(eventCtrl) != "undefined") && (eventCtrl != null) &&
                (typeof(eventCtrl.id) == "string") &&
                (eventCtrl.id == val.controlhookup)) {
                ctrl = eventCtrl;
            }
        }
        if ((typeof(ctrl) == "undefined") || (ctrl == null)) {
            ctrl = document.getElementById(val.controltovalidate);
        }
        if ((typeof(ctrl) != "undefined") && (ctrl != null) &&
            (ctrl.tagName.toLowerCase() != "table" || (typeof(event) == "undefined") || (event == null)) && 
            ((ctrl.tagName.toLowerCase() != "input") || (ctrl.type.toLowerCase() != "hidden")) &&
            (typeof(ctrl.disabled) == "undefined" || ctrl.disabled == null || ctrl.disabled == false) &&
            (typeof(ctrl.visible) == "undefined" || ctrl.visible == null || ctrl.visible != false) &&
            (IsInVisibleContainer(ctrl))) {
            if ((ctrl.tagName.toLowerCase() == "table" && (typeof(__nonMSDOMBrowser) == "undefined" || __nonMSDOMBrowser)) ||
                (ctrl.tagName.toLowerCase() == "span")) {
                var inputElements = ctrl.getElementsByTagName("input");
                var lastInputElement  = inputElements[inputElements.length -1];
                if (lastInputElement != null) {
                    ctrl = lastInputElement;
                }
            }
            if (typeof(ctrl.focus) != "undefined" && ctrl.focus != null) {
                ctrl.focus();
                Page_InvalidControlToBeFocused = ctrl;
            }
        }
    }
    function IsInVisibleContainer(ctrl) {
        if (typeof(ctrl.style) != "undefined" &&
            ( ( typeof(ctrl.style.display) != "undefined" &&
                ctrl.style.display == "none") ||
              ( typeof(ctrl.style.visibility) != "undefined" &&
                ctrl.style.visibility == "hidden") ) ) {
            return false;
        }
        else if (typeof(ctrl.parentNode) != "undefined" &&
                 ctrl.parentNode != null &&
                 ctrl.parentNode != ctrl) {
            return IsInVisibleContainer(ctrl.parentNode);
        }
        return true;
    }
    function IsValidationGroupMatch(control, validationGroup) {
        if ((typeof(validationGroup) == "undefined") || (validationGroup == null)) {
            return true;
        }
        var controlGroup = "";
        if (typeof(control.validationGroup) == "string") {
            controlGroup = control.validationGroup;
        }
        return (controlGroup == validationGroup);
    }
    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.evaluationfunction) == "string") {
                eval("val.evaluationfunction = " + val.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");
            }
            if (typeof(val.controltovalidate) == "string") {
                ValidatorHookupControlID(val.controltovalidate, val);
            }
            if (typeof(val.controlhookup) == "string") {
                ValidatorHookupControlID(val.controlhookup, val);
            }
        }
        Page_ValidationActive = true;
    }
    function ValidatorConvert(op, dataType, val) {
        function GetFullYear(year) {
            var twoDigitCutoffYear = val.cutoffyear % 100;
            var cutoffYearCentury = val.cutoffyear - twoDigitCutoffYear;
            return ((year > twoDigitCutoffYear) ? (cutoffYearCentury - 100 + year) : (cutoffYearCentury + year));
        }
        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;
            if (m[2].length == 0 && m[3].length == 0)
                return null;
            cleanInput = (m[1] != null ? m[1] : "") + (m[2].length>0 ? m[2] : "0") + (m[3].length>0 ? "." + m[3] : "");
            num = parseFloat(cleanInput);
            return (isNaN(num) ? null : num);
        }
        else if (dataType == "Currency") {
            var hasDigits = (val.digits > 0);
            var beginGroupSize, subsequentGroupSize;
            var groupSizeNum = parseInt(val.groupsize, 10);
            if (!isNaN(groupSizeNum) && groupSizeNum > 0) {
                beginGroupSize = "{1," + groupSizeNum + "}";
                subsequentGroupSize = "{" + groupSizeNum + "}";
            }
            else {
                beginGroupSize = subsequentGroupSize = "+";
            }
            exp = new RegExp("^\\s*([-\\+])?((\\d" + beginGroupSize + "(\\" + val.groupchar + "\\d" + subsequentGroupSize + ")+)|\\d*)"
                            + (hasDigits ? "\\" + val.decimalchar + "?(\\d{0," + val.digits + "})" : "")
                            + "\\s*$");
            m = op.match(exp);
            if (m == null)
                return null;
            if (m[2].length == 0 && hasDigits && m[5].length == 0)
                return null;
            cleanInput = (m[1] != null ? m[1] : "") + m[2].replace(new RegExp("(\\" + val.groupchar + ")", "g"), "") + ((hasDigits && m[5].length > 0) ? "." + m[5] : "");
            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 && (((typeof(m[2]) != "undefined") && (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})(?:\\s|\\2)((\\d{4})|(\\d{2}))(?:\\s\u0433\\.|\\.)?\\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 = ((typeof(m[5]) != "undefined") && (m[5].length == 4)) ? m[5] : GetFullYear(parseInt(m[6], 10));
            }
            month -= 1;
            var date = new Date(year, month, day);
            if (year < 100) {
                date.setFullYear(year);
            }
            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 ((typeof(val.controltocompare) != "string") ||
            (typeof(document.getElementById(val.controltocompare)) == "undefined") ||
            (null == document.getElementById(val.controltocompare))) {
            if (typeof(val.valuetocompare) == "string") {
                compareTo = val.valuetocompare;
            }
        }
        else {
            compareTo = ValidatorGetValue(val.controltocompare);
        }
        var operator = "Equal";
        if (typeof(val.operator) == "string") {
            operator = val.operator;
        }
        return ValidatorCompare(value, compareTo, operator, val);
    }
    function CustomValidatorEvaluateIsValid(val) {
        var value = "";
        if (typeof(val.controltovalidate) == "string") {
            value = ValidatorGetValue(val.controltovalidate);
            if ((ValidatorTrim(value).length == 0) &&
                ((typeof(val.validateemptytext) != "string") || (val.validateemptytext != "true"))) {
                return true;
            }
        }
        var args = { Value:value, IsValid:true };
        if (typeof(val.clientvalidationfunction) == "string") {
           eval(val.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(validationGroup) {
        if (typeof(Page_ValidationSummaries) == "undefined")
            return;
        var summary, sums, s;
        var headerSep, first, pre, post, end;
        for (sums = 0; sums < Page_ValidationSummaries.length; sums++) {
            summary = Page_ValidationSummaries[sums];
            summary.style.display = "none";
            if (!Page_IsValid && IsValidationGroupMatch(summary, validationGroup)) {
                var i;
                if (summary.showsummary != "False") {
                    summary.style.display = "";
                    if (typeof(summary.displaymode) != "string") {
                        summary.displaymode = "BulletList";
                    }
                    switch (summary.displaymode) {
                        case "List":
                            headerSep = "<br>";
                            first = "";
                            pre = "";
                            post = "<br>";
                            end = "";
                            break;
                        case "BulletList":
                        default:
                            headerSep = "";
                            first = "<ul>";
                            pre = "<li>";
                            post = "</li>";
                            end = "</ul>";
                            break;
                        case "SingleParagraph":
                            headerSep = " ";
                            first = "";
                            pre = "";
                            post = " ";
                            end = "<br>";
                            break;
                    }
                    s = "";
                    if (typeof(summary.headertext) == "string") {
                        s += summary.headertext + headerSep;
                    }
                    s += first;
                    for (i=0; i<Page_Validators.length; i++) {
                        if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
                            s += pre + Page_Validators[i].errormessage + post;
                        }
                    }
                    s += end;
                    summary.innerHTML = s;
                    window.scrollTo(0,0);
                }
                if (summary.showmessagebox == "True") {
                    s = "";
                    if (typeof(summary.headertext) == "string") {
                        s += summary.headertext + "\r\n";
                    }
                    var lastValIndex = Page_Validators.length - 1;
                    for (i=0; i<=lastValIndex; i++) {
                        if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
                            switch (summary.displaymode) {
                                case "List":
                                    s += Page_Validators[i].errormessage;
                                    if (i < lastValIndex) {
                                        s += "\r\n";
                                    }
                                    break;
                                case "BulletList":
                                default:
                                    s += "- " + Page_Validators[i].errormessage;
                                    if (i < lastValIndex) {
                                        s += "\r\n";
                                    }
                                    break;
                                case "SingleParagraph":
                                    s += Page_Validators[i].errormessage + " ";
                                    break;
                            }
                        }
                    }
                    alert(s);
                }
            }
        }
    }
    


     

    Friday, April 19, 2013 8:23 AM

All replies

  • User-166373564 posted

    Hi Peter

    Fixed now

    I’m glad to hear that you have solved this issue by yourself, and it is very appreciated to share your solution to us. It will be helpful for our community members who have similar problem, and welcome to post your question on asp.net forums in your future programming.

    With regards

    Thursday, April 25, 2013 4:06 AM
  • User1390435587 posted

    Hello

    Essentially that was the answer in the text above. I used the wrong type of validator, I should of used   'RegularExpressionValidator' from the toolbox. Using the custom validator caused the above error. The how and why that occured is above my level of ability, but thats all I did to work around the problem.

    best regards

    Peter

    Thursday, April 25, 2013 4:58 AM