티스토리 뷰
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 |
댓글