Extjs 4:立即禁用Extjs表单中的所有输入元素

Nic*_*ick 2 forms extjs elements extjs4

我创建了一个extjs表单,它使用列布局分为两部分,其中包含大约10-15个输入元素.如何根据条件一次禁用所有这些输入元素.目前我已经创建了一个函数,它可以获取表单中的所有组件,并通过每个元素使用ext.each循环来禁用它们

这是我使用的功能

function prepare_form_view(form){
    var f=Ext.getCmp(form);
    var els=f.query('component');
    Ext.each(els,function(o){
        var xtype=o.getXType();
        if(xtype=='textfield'||xtype=='combobox'||xtype=='datefield'||xtype=='textareafield'||xtype=='button'){
            o.disabledCls='myDisabledClass';
            o.disable();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

是否有任何替代方法,以便我可以禁用所有元素而不循环遍历每个元素.我也希望将此功能与其他形式一起使用.我正在寻找像'setFieldDefult'这样的功能.

Blu*_*ice 8

如果您在ExtJs 4.x中使用FormPanel,那么这就是您要寻找的 -

yourFormPanel.getForm().applyToFields({disabled:true});
Run Code Online (Sandbox Code Playgroud)

getForm()方法返回Ext.form.Basic对象,使用此类,您还可以访问此表单上的所有字段getFields(),然后您可以迭代所有字段以执行任何操作.

希望这会有所帮助并祝你好运:-)