Ext.getCmp未定义

时间:2014-02-18 20:30:51

标签: javascript extjs

虽然我查了关于同一问题的其他帖子,但他们并没有证明有用。 下面是我试图获取文本框值的代码,但我反复得到相同的错误。 有没有其他方法可供选择。

initComponent: function() {
    this.items = [
        {
            xtype: 'form',
            padding: '5 5 0 5',
            border: false,
            style: 'background-color: #fff;',

            fieldDefaults: {
                anchor: '100%',
                labelAlign: 'left',
                allowBlank: false,
                combineErrors: true,
                msgTarget: 'side'
            },

            items: [
                {
                    xtype: 'textfield',
                    name : 'id',
                    fieldLabel: 'id',
                    hidden:true
                },    
                {
                    xtype: 'textfield',
                    name : 'name',
                    id : 'idname',
                    fieldLabel: 'Name',
                    allowBlank:false,
                    blankText:'Name is required'
                },
                {
                    xtype: 'textfield',
                    name : 'accno',
                    maxLength: 16,
                    enforceMaxLength : true,
                    regex: /^.{16}$/,
                    regexText:'Only 16 Digits please',
                    //autoCreate: {tag: 'input', type: 'text', size: '20', autocomplete: 'off', maxlength: '10'},
                    fieldLabel: 'AccNo'
                },
                {
                    xtype: 'textfield',
                    name : 'trade',
                    fieldLabel: 'Trade'
                },
                {
                    xtype: 'datefield',
                    name : 'doi',
                    fieldLabel: 'Date Of Insurance',
                    editable: false,
                    value : new Date()
                },
                {
                    xtype: 'datefield',
                    name : 'dd',
                    fieldLabel: 'Due Date',
                    editable:false,
                    value : new Date()
                }
            ]
        }
    ];

    this.dockedItems = [{
        xtype: 'toolbar',
        dock: 'bottom',
        id:'buttons',
        ui: 'footer',
        items: ['->', {
            iconCls: 'icon-save',
            itemId: 'save',
            text: 'Save',
            handler: function (button) {
                Ext.Msg.alert('You clicked the button');
                var txt = Ext.getCmp('idname').value();
                //var tf = button.up('window').down('#idname');

                Ext.Msg.alert(txt);

            }, 
            action: 'save'
        },{
            iconCls: 'icon-reset',
            text: 'Cancel',
            scope: this,
            handler: this.close
        }]
    }];

    this.callParent(arguments);
}

});

1 个答案:

答案 0 :(得分:0)

我会尝试Ext.ComponentQuery.query method

在你的按钮上检查

    xtype: 'toolbar',
    dock: 'bottom',
    id:'buttons',
    ui: 'footer',
    items: ['->', {
        iconCls: 'icon-save',
        itemId: 'save',
        text: 'Save', 
        scope:this,
        handler: function (button) {
            Ext.Msg.alert('You clicked the button');
            var txtfield = this.query('#idname');
            var txt = txfield.getValue();
            Ext.Msg.alert(txt);

        }, 
        action: 'save'
    }