extjs 如何在Ext JS中删除禁用的属性

wr98u20j  于 2023-04-20  发布在  其他
关注(0)|答案(2)|浏览(124)

我有一个默认设置为禁用的字段。但我想在单击按钮时更改此属性(启用它)。

{
    margin: '10 50 10 50',
    padding: '10 20 10 20',
    xtype: 'textfield',
    name: 'name',
    fieldLabel: 'Survey Name',
    allowBlank: false,
    disabled: true,
    id: 'name'
},

这是按钮:

{
    margin: '0 50 0 50',
    padding: '10 20 10 20',
    xtype: 'button',
    text: "Create",
    listeners: {
        click: function() {
            Ext.get('name').disabled = false;
        }
    }
}

当我点击这个按钮时,什么也没有发生。这里有什么问题吗?

llmtgqce

llmtgqce1#

因为你已经为你的组件提供了id,所以不要使用Ext.get(),而是使用Ext.getCmp()
示例

Ext.getCmp('name').setDisabled(false)

在这个**Fiddle**中,我使用相同的代码创建了一个演示。

代码片段:

Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.create({
            xtype: 'panel',
            title: 'Demo',
            renderTo: Ext.getBody(),
            layout: 'hbox',
            bodyPadding: 10,
            items: [{
                xtype: 'textfield',
                name: 'name',
                fieldLabel: 'Survey Name',
                allowBlank: false,
                disabled: true,
                id: 'name'
            }, {
                xtype: 'button',
                text: "Create",
                listeners: {
                    click: function () {
                        Ext.getCmp('name').setDisabled(false);
                    }
                }
            }]
        })
    }
});

注意:不要使用id,而是使用itemId或extjs组件的任何其他配置,因为id不能重复。

代码片段:

Ext.create({
    xtype: 'panel',
    title: 'Enable component using ITEM ID',
    renderTo: Ext.getBody(),
    layout: 'hbox',
    bodyPadding: 10,
    items: [{
        xtype: 'textfield',
        name: 'name',
        fieldLabel: 'Survey Name',
        allowBlank: false,
        disabled: true,
        itemId: 'name'
    }, {
        xtype: 'button',
        text: "Create",
        handler: function() {
            this.up('panel').down('#name').setDisabled(false);
        }
    }]
})
hzbexzde

hzbexzde2#

关于Ext JS的信息很少。
我尝试了一下,要删除disabled属性,可以使用Ext.dom.Element的“set”函数,第二个参数为false

Ext.get('name').set({'disabled': false }, false);

但是我猜你可能用的是老版本的Ext JS。在最新版本中,它可以通过使用value === undefined删除。

相关问题