2017-04-11 6 views
0

Ich habe einfache Form (5 Textfelder) und eine von ihnen muss ich validieren (überprüfen, ob es Wert in der Liste aus dem Laden ist einzigartig). Also mein Code ist folgende:ExtJS 4 Form Validierung

{ 
     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); 
    } 

aber nachdem ich den gleichen Wert (das gleiche wie in der Filiale) geben Sie dieses Feld gültig bleiben. Wenn ich "Debugger" verwende, sehe ich, dass dieses Feld als ungültig markiert ist (roter Rahmen um Feld und Prozedur gibt false zurück), aber ich kann es nur in diesem Moment sehen. Wenn ich die Debugger-Kontrolle verliere, wird das Feld normal (ich meine ohne roten Rahmen).

Warum? Was ist los?

Antwort

0

Sie wissen nicht, warum, aber wenn dieser Fehler bei der Überprüfung outsite „jeder“ Schleife, wie dies festgelegt ist:

{ 
      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); 
     } 

alles in Ordnung ist.