2017-04-11 65 views
0

我有簡單的表單(5個textfields),其中一個我必須驗證(檢查它的值是否在存儲列表中是唯一的)。所以我的代碼如下:ExtJS 4表單驗證

{ 
     xtype:  'textfield', 
     fieldLabel: 'Name', 
     itemId:  'BRW_NAME', 
     vtype:  'alphanum', 
     validator: function (tab) { 
         Ext.getStore('BrwStore').each(function(rec) { 
          if (rec.get('brw_nazwa') == tab) { 
//debugger; 
           Ext.ComponentQuery.query('#BRW_NAME').markInvalid('DOUBLE NAME ERROR!'); 
           return (false); 
          } 
         }); 
         return (true); 
    } 

但在輸入相同的值(與存儲中相同)後,此字段保持有效。當我使用「調試器」時,我發現這個字段被標記爲無效(紅框圍繞字段,過程返回錯誤),但我只能在這一刻看到它。當我鬆散調試器控制領域變得正常(我的意思是沒有紅色框架)。

爲什麼? 有什麼問題?

回答

0

不知道爲什麼,但是當這個驗證錯誤設置outsite「每個」循環,像這樣:

{ 
      xtype:  'textfield', 
      fieldLabel: 'Name', 
      itemId:  'BRW_NAME', 
      vtype:  'alphanum', 
      validator: function (tab) { 
          var err = false; 

          Ext.getStore('BrwStore').each(function(rec) { 
           if (rec.get('brw_nazwa') == tab) err = true; 
          }); 
          if (err) { 
           Ext.ComponentQuery.query('#BRW_NAME').markInvalid(); 
           return 'DOUBLE NAME ERROR!'; 
          } 
          return (true); 
     } 

一切正常。