1

私はextjsが初めてです。私は extjs-4.1.0 を使用しています。テキスト フィールドがあり、そのぼかしイベントでトリム メソッドを呼び出したいと考えています。私のコードは mozilla firefox では正常に動作しますが、テキスト ボックスがフォーカスを失うと、IE で「オブジェクトはこのプロパティまたはメソッドをサポートしていません」という JavaScript エラーが発生します。
IE でぼかしイベントを処理する他の方法はありますか?

以下の私のコードを見つけてください:

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

            }
        }
    }
4

3 に答える 3

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);
    }
});
于 2012-08-28T06:53:07.413 に答える
0

私の推測では、これはぼかしとは何の関係もなく、実際には field.getValue() は null や数値などの特定のケースでは文字列ではなく、その線に沿ったものです。交換してみる var newVal = field.getValue().trim();

var newVal = Ext.String.trim(field.getValue());
于 2012-09-18T20:01:53.597 に答える
0

ブラウザー IE 7/8 は、テキスト フィールドが空の場合、テキスト フィールドの値 (d.getValue()) をNULLとして返すため、有効なオブジェクトが作成されないため、trim() のメソッド呼び出しが失敗します。

以下の解決策は、すべてのブラウザーで機能します。

this.setValue(Ext.util.Format.trim(this.getValue())); 
于 2013-09-29T14:11:54.593 に答える