티스토리 뷰

웹개발/Javascript

Validator

야쿠 yaku 2012.03.12 16:17

    var validator = {
        types : {},
        messages : [],
        config: {},
        validate: function( data ) {
            var i, msg, type, checker, result_ok;

            this.messages = [];

            for ( i in data ) {
                if ( data.hasOwnProperty(i) ) {
                    type = this.config[i];
                    checker = this.types[type];

                    if ( !type ) {
                        continue;
                    }

                    if ( !checker ) {
                        throw {
                            name : "validationError",
                            message : type + ' noting '
                        };
                    }

                    result_ok = checker.validate( data[i] );
                    if (!result_ok) {
                        msg = "'" + i + "' 값이 유효하지 않습니다. " + checker.instructions;
                        this.messages.push(msg);
                    }
                }
            }

            return this.hasErrors();
        },
        hasErrors: function() {
            return this.messages.length !== 0;
        }
    }

    validator.types.isNonEmpty = {
        validate : function (value) {
            return value !== "";
        },
        instructions : "이 값은 필수 입니다."
    };

    validator.types.isNumber = {
        validate : function ( value ){
            return !isNaN(value);
        },
        instructions : "이 값은 숫자여야 합니다."
    };

    validator.types.isAlphaNum = {
        validate : function ( value ) {
            return  !/[^a-z0-9]/i.test(value);
        },
        instructions : "특수 문자를 제외한 글자와 숫자만 사용할 수 있습니다."
    };

    validator.config = {
        first_name : 'isNonEmpty',
        age : 'isNumber',
        username: 'isAlphaNum'
    };

    var data = {
        first_name : "Super",
        last_name : "Man",
        age : "unknown",
        username : "o_0"
    };

    validator.validate( data );

    console.log( validator.messages );


저작자 표시
신고

'웹개발 > Javascript' 카테고리의 다른 글

구굴 rss, atom 로드 주소  (0) 2012.03.15
setTimout 을 이용하여 라운드 트립을 줄이기.  (0) 2012.03.14
Validator  (0) 2012.03.12
환율 API 정보 리스트  (0) 2012.03.12
자바스크립트 키코드.  (0) 2012.03.09
javascript constructor 속성  (0) 2012.03.09
댓글
댓글쓰기 폼