七段

          無論怎樣,請讓我先感謝一下國家。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            35 Posts :: 2 Stories :: 7 Comments :: 0 Trackbacks
            (function(){
                          
          var uuid = 0;
                          
          var NEW = 0, PENDING = 1, FINISH = 2;
                          
          var RemoteRule = window.RemoteRule = function(fn, options){
                              
          this.id = uuid++;
                              
          this.fn = fn;
                              
          this.para = options.requestPara;
                              
          this.showTips = function(){
                                  options.showTips();
                              }
                          }
                          
                          
          var RemoteValidator = window.RemoteValidator = function(){
                              
          this.rules = {};
                              
          this.status = {};
                          }
                          RemoteValidator.prototype 
          = {
                              addRule: 
          function(rule){
                                  
          this.rules[rule.id] = rule;
                                  
          this.status[rule.id] = NEW;
                              },
                              reset: 
          function(){
                                  
          this.rules = {};
                                  
          this.status = {};
                              },
                              validate: 
          function(callBack){
                                  
          var self = this;
                                  
          for (var id in self.rules) {
                                      
          var rule = self.rules[id];
                                      
          var updateFn = (function(){
                                          
          return function(data){
                                              
          if (data) {
                                                  
          delete self.status[rule.id];
                                              }
                                              
          else {
                                                  self.hasError 
          = true;
                                              }
                                              
          if (self.hasError) {
                                                  rule.showTips();
                                              }
                                              
          var isEmpty = true;
                                              
          for (var id in self.status) {
                                                  isEmpty 
          = false;
                                                  
          break;
                                              }
                                              
          if (isEmpty) {
                                                  callBack();
                                              }
                                          }
                                      })();
                                      self.status[rule.id] 
          = PENDING;
                                      rule.fn(rule.para, updateFn);
                                      
                                  }
                              }
                          }
                          
                      })();
                      
                      
          var dwrFnMock = function(para, callBack){
                          setTimeout(
          function(){
                              
          if (para.value > 0
                                  callBack(
          true);
                              
          else 
                                  callBack(
          false);
                          }, 
          1000);
                      };
                      
          var validator1 = new RemoteValidator();
                      validator1.addRule(
          new RemoteRule(dwrFnMock, {
                          requestPara: {
                              value: 
          1
                          },
                          showTips: 
          function(){
                              alert(
          "hasError!");
                          }
                      }));
                      validator1.validate(
          function(){
                          alert(
          "submit");
                      });
                      
          var validator2 = new RemoteValidator();
                      validator2.addRule(
          new RemoteRule(dwrFnMock, {
                          requestPara: {
                              value: 
          -1
                          },
                          showTips: 
          function(){
                              alert(
          "hasError!");
                          }
                      }));
                      validator2.validate(
          function(){
                          alert(
          "submit");
                      })
          posted on 2009-12-08 11:28 sevenduan 閱讀(328) 評論(0)  編輯  收藏 所屬分類: JavaScript
          主站蜘蛛池模板: 二手房| 铜川市| 黑水县| 库车县| 黔西| 长乐市| 双柏县| 长阳| 磐安县| 宿州市| 霍邱县| 中牟县| 蓬莱市| 林州市| 青浦区| 文成县| 家居| 新竹市| 布拖县| 文昌市| 句容市| 玉龙| 巴塘县| 休宁县| 略阳县| 桓台县| 玛纳斯县| 景德镇市| 江阴市| 定西市| 余干县| 泸西县| 怀安县| 利辛县| 兰考县| 巴塘县| 雷波县| 永平县| 米脂县| 咸阳市| 福泉市|