2012-08-28 61 views
1

我是extjs的新手。我正在使用extjs-4.1.0,我有一個textfield,我希望在其blur事件中調用trim方法。我的代碼工作正常Mozilla Firefox中,但導致JavaScript錯誤,「對象不支持此屬性或方法」在IE瀏覽器時,文本框失去焦點。
是否有任何其他方式來處理IE中的模糊事件?在extjs的Textfield上使用blur會導致錯誤

下面找到我的代碼:

{ 
     flex:1, 
     xtype:'textfield', 
     fieldLabel: 'Name', 
     allowBlank: false, 
     maxLength: 50, 
     name: 'name', 
     maskRe: /[a-zA-Z\s]+$/, 
     validator: function(v) { 
      if(!(/[a-zA-Z\s]+$/.test(v))){ 
       return "This Field should be in alphabets"; 
      } 
      return true; 
     }, 
     listeners: { 
      render: function(c) { 
       Ext.QuickTips.register({ 
       target: c.getEl(), 
       text: 'Format: John/John Kelvin' 
       }) 
      }, 
      blur: function(d) { 
       var newVal = d.getValue().trim(); 
       d.setValue(newVal); 

      } 
     } 
    } 
+0

我還檢查了一個額外的逗號右括號之前(}]),其中IE恨,但似乎並沒有工作 – Supereme

回答

4

我把監聽控制器裏面,似乎是在IE中很好地工作。

Ext.define('BM.controller.FormControl', { 
    extend: 'Ext.app.Controller', 

    views: [ 
     'MyForm' 
    ], 

    init: function() { 
     if (this.inited) { 
      return; 
     } 
     this.inited = true; 
     this.control({ 
      'my-form > field': { 
       blur: this.outOfFocus 
      } 
     }); 
    }, 

    outOfFocus: function(field, event) { 
     var newVal = field.getValue().trim(); 
     field.setValue(newVal); 
    } 
}); 
+0

如果這是一個很好的答案,你能接受嗎? – bldoron

0

我的猜測是,這有沒有關係模糊和實際field.getValue()是不是在某些情況下,如空或數字或沿該線的東西的字符串。嘗試用

var newVal = Ext.String.trim(field.getValue()); 
0

瀏覽器IE替換var newVal = field.getValue().trim();

7/8返回文本字段值(d.getValue())用作NULL當文本字段是空的,所以方法調用修剪()是因爲沒有創建有效的對象而失敗。

下面的解決方案對我的作品在所有瀏覽器:

this.setValue(Ext.util.Format.trim(this.getValue())); 
相關問題