2016-04-12 6 views
0

Я пытаюсь проверить поля в моей форме, но я продолжаю получать сообщение об ошибке. Вот мой код:Extjs проверить в отдельных файлах

Ext.define('ExtDoc.views.extfields.FieldsValidator',{ 
    valEng: function(val) { 
    var engTest = /^[a-zA-Z0-9\s]+$/; 
    Ext.apply(Ext.form.field.VTypes, { 

     eng: function(val, field) { 
     return engTest.test(val); 
     }, 

     engText: 'Write it in English Please', 
     // vtype Mask property: The keystroke filter mask 
     engMask: /[a-zA-Z0-9_\u0600-\u06FF\s]/i 
    }); 
    } 

}); 

И я определяю свое поле следующим образом:

{ 
    "name": "tik_moed_chasifa", 
    "type": "ExtDoc.views.extfields.ExtDocTextField", 
    "label": "moed_hasifa", 
    "vtype": "eng", 
    "msgTarget": "under" 
} 

Первый фрагмент находится в отдельном JS файл, и я его в моих полях JS файл, как требуется.

Когда я начинаю набирать текст в текстовом поле, я продолжаю видеть следующие Сообщи ошибки в проводнике отладчике:

«SCRIPT438: Объект не поддерживает свойство или метод" англо»

Что это может быть? Я объявил что-то не так?

ответ

0

Вы определили свой собственный класс с функцией valEng(val), но вы его не создаете, и вы не вызываете эту функцию нигде. Кроме того, ваша функция valEng(val) не требует параметра, потому что вы не используете этот параметр в любом месте.

Было бы намного проще и понятнее, не могли бы вы удалить часть Ext.define и создать валидаторы там, где они вам нужны. Например, если вы нуждаетесь в них внутри initComponent функции:

initComponent:function() { 
    var me = this; 
    Ext.apply(Ext.form.field.VTypes, { 
     mobileNumber:function(val, field) { 
      var numeric = /^[0-9]+$/ 
      if(!Ext.String.startsWith(val,'+')) return false; 
      if(!numeric.test(val.substring(1))) return false; 
      return true; 
     }, 
     mobileNumberText:'This is not a valid mobile number' 
    }); 
    Ext.apply(me,{ 
     .... 
      items: [{ 
       xtype:'fieldcontainer', 
       items:[{ 
        xtype: 'combobox', 
        vtype: 'mobileNumber', 

Или, вы можете добавить в свой application.js, в методе init, если вам это нужно довольно часто на различных уровнях приложения:

Ext.define('MyApp.Application', { 
    extend: 'Ext.app.Application', 
    views: [ 
    ], 

    controllers: [ 
    ], 

    stores: [ 
    ], 

    init:function() { 
     Ext.apply(Ext.form.field.VTypes, { 
      mobileNumber:function(val, field) { 
       var numeric = /^[0-9]+$/ 
       if(!Ext.String.startsWith(val,'+')) return false; 
       if(!numeric.test(val.substring(1))) return false; 
       return true; 
      }, 
      mobileNumberText:'This is not a valid mobile number' 
     }); 
    } 
Смежные вопросы