1. 策略模式
策略模式定義一系列的算法,把它們封裝起來,并且可以互相替換。
var strategies = {
????? isNonEmpty: function(value,errMsg){
???????????? if(value === ''){
??????????????????? return errMsg;
???????????? }
????? },
????? minLength:function(value,length,errMsg){
???????????? if(value.length < length){
??????????????????? return errMsg;
???????????? }
????? }
}
?
var validator = function(){
????? this.cache = [];
}
?
validator.prototype.add = function(dom,rule,errMsg){
????? var array = rule.split(':');
????? this.cache.push(function(){
???????????? var strategy = array.shift();
???????????? array.unshift(dom.value);
???????????? array.push(errMsg);
???????????? return strategies[strategy].apply(dom, array);
????? });
}
?
validator.prototype.validate = function(){
????? for(var i =0,validatorFunc;validatorFunc=this.cache[i++];){
???????????? var msg = validatorFunc();
???????????? if(msg){
??????????????????? return msg;
???????????? }
????? }
}
?
validator.add(form.name,'isNonEmpty','用戶名不能為空');
validator.add(form.name,'minLength:10','用戶名不能為空');
?
validator.validate();