七段

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

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            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
          主站蜘蛛池模板: 福安市| 武宣县| 阆中市| 黄龙县| 新干县| 马龙县| 伊春市| 烟台市| 临高县| 庄浪县| 临朐县| 保康县| 惠水县| 佛教| 望谟县| 刚察县| 龙里县| 贵港市| 云梦县| 凌海市| 乌苏市| 东兰县| 寿宁县| 四子王旗| 呼图壁县| 道孚县| 东平县| 固原市| 宜阳县| 商洛市| 永丰县| 桐梓县| 三都| 萝北县| 龙山县| 布拖县| 荔波县| 甘谷县| 肇东市| 青州市| 南陵县|