2016-04-12 8 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ファイルでそれを持っています。

私がテキストフィールドにテキストを入力して起動すると、私はエクスプローラのデバッガで、次のエラーMSG見ておいてください。

「SCRIPT438:オブジェクトはプロパティまたはメソッドをサポートしていない 『ENG』」

何ができますか?私は何か間違ったと宣言しましたか?

答えて

0

関数valEng(val)を使用して独自のクラスを定義しましたが、インスタンス化したり、関数をどこにでも呼び出すことはできません。 さらに、関数valEng(val)は、そのパラメータをどこでも使用していないため、パラメータを必要としません。

これははるかに簡単で読みやすいでしょう。Ext.defineの部分を削除し、必要な場所でバリデーターを作成しますか?

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', 

それとも、あなたのアプリケーションの異なるレベルでかなり頻繁にそれを必要とする場合は、init方法では、あなたのApplication.jsに追加することができます::

をたとえば、あなたは initComponent関数内でそれらを必要とする場合
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' 
     }); 
    } 
関連する問題