티스토리 뷰
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 |
환율 API 정보 리스트 (0) | 2012.03.12 |
자바스크립트 키코드. (0) | 2012.03.09 |
javascript constructor 속성 (0) | 2012.03.09 |
댓글