2017-04-11 73 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); 
     } 

一切正常。