Results 1 to 2 of 2

Thread: form validation errors

  1. #1
    Join Date
    Jan 2010
    Posts
    48
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default form validation errors

    I'm still pretty new to javascript (Though I've coding experience) and have been asked to fix the errors on a form validation that is more advanced than my skills.

    I was recieving and error saying that 'Validation' was undefined - so looking in the .php I noticed it wasnt even linked to the .js file. I have little experience with javascript but after fixing this I then recieved 2 more errors:

    Line 29
    Class is undefined.

    Line 740
    Object expected.

    line 29 is found in the Validation.js (highlighted below- partial code as the full thing is too long to post.)

    Code:
     
     
    var Validator = Class.create();
     
    Validator.prototype = {
        initialize : function(className, error, test, options) {
            if(typeof test == 'function'){
                this.options = $H(options);
                this._test = test;
            } else {
                this.options = $H(test);
                this._test = function(){return true};
            }
            this.error = error || 'Validation failed.';
            this.className = className;
        },
        test : function(v, elm) {
            return (this._test(v,elm) && this.options.all(function(p){
                return Validator.methods[p.key] ? Validator.methods[p.key](v,elm,p.value) : true;
            }));
        }
    }
    Validator.methods = {
        pattern : function(v,elm,opt) {return Validation.get('IsEmpty').test(v) || opt.test(v)},
        minLength : function(v,elm,opt) {return v.length >= opt},
        maxLength : function(v,elm,opt) {return v.length <= opt},
        min : function(v,elm,opt) {return v >= parseFloat(opt)}, 
        max : function(v,elm,opt) {return v <= parseFloat(opt)},
        notOneOf : function(v,elm,opt) {return $A(opt).all(function(value) {
            return v != value;
        })},
        oneOf : function(v,elm,opt) {return $A(opt).any(function(value) {
            return v == value;
        })},
        is : function(v,elm,opt) {return v == opt},
        isNot : function(v,elm,opt) {return v != opt},
        equalToField : function(v,elm,opt) {return v == $F(opt)},
        notEqualToField : function(v,elm,opt) {return v != $F(opt)},
        include : function(v,elm,opt) {return $A(opt).all(function(value) {
            return Validation.get(value).test(v,elm);
        })}
    }
     
    var Validation = Class.create();
     
    Validation.prototype = {
        initialize : function(form, options){
            this.options = Object.extend({
                onSubmit : true,
                stopOnFirst : false,
                immediate : false,
                focusOnError : true,
                useTitles : false,
                onFormValidate : function(result, form) {},
                onElementValidate : function(result, elm) {}
            }, options || {});
            this.form = $(form);
            if(this.options.onSubmit) Event.observe(this.form,'submit',this.onSubmit.bind(this),false);
            if(this.options.immediate) {
                var useTitles = this.options.useTitles;
                var callback = this.options.onElementValidate;
                Form.getElements(this.form).each(function(input) { // Thanks Mike!
                    Event.observe(input, 'blur', function(ev) { Validation.validate(Event.element(ev),{useTitle : useTitles, onElementValidate : callback}); });
                });
            }
        },
        onSubmit :  function(ev){
            if(!this.validate()) Event.stop(ev);
        },
        validate : function() {
            var result = false;
            var useTitles = this.options.useTitles;
            var callback = this.options.onElementValidate;
            if(this.options.stopOnFirst) {
                result = Form.getElements(this.form).all(function(elm) { return Validation.validate(elm,{useTitle : useTitles, onElementValidate : callback}); });
            } else {
                result = Form.getElements(this.form).collect(function(elm) { return Validation.validate(elm,{useTitle : useTitles, onElementValidate : callback}); }).all();
            }
            if(!result && this.options.focusOnError) {
                Form.getElements(this.form).findAll(function(elm){return $(elm).hasClassName('validation-failed')}).first().focus()
            }
            this.options.onFormValidate(result, this.form);
            return result;
        },
        reset : function() {
            Form.getElements(this.form).each(Validation.reset);
        }
    }
    And line 740 refers to this line (also highlighted):

    Code:
    <script type="text/javascript">
        function formCallback(result, form) {
        window.status = "valiation callback for form '" + form.id + "': result = " + result;
        }
        var valid = new Validation('user_frm', {immediate : true, onFormValidate : formCallback});
    </script>

  2. #2
    Join Date
    Jan 2010
    Posts
    48
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Default

    sorted, never mind

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •