Extjs 4: отключить все входные элементы в форме Extjs одновременно - PullRequest
2 голосов
/ 16 февраля 2012

Я создал форму extjs, которая разделена на 2 части с использованием макета столбца и содержит почти 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();
        }
    });
}

Есть ли альтернативный способ, чтобы я мог отключить все элементы, не проходя через все элементы. Я хочу использовать эту функцию и с другими формами . Я ищу что-то вроде функции 'setFieldDefult'.

Ответы [ 4 ]

8 голосов
/ 14 марта 2013

Если вы используете FormPanel в ExtJs 4.x, это то, что вы ищете -

yourFormPanel.getForm().applyToFields({disabled:true});

Метод getForm() возвращает объект Ext.form.Basic, с этим классом вы также можете получить доступ ко всем полям этой формы с помощью getFields(), затем вы можете выполнить итерацию всех полей, чтобы сделать что-либо.

Надеюсь, это поможет и удачи: -)

4 голосов
/ 20 февраля 2012

А как насчет метода отключения / включения панели? Это кажется намного проще.

panel.disable();

panel.enable();
1 голос
/ 16 февраля 2012

Вот предложение. Поскольку вы говорите, что ваша форма разделена на две части, почему бы вам не поместить их в FieldSet ? Вы можете отключить набор полей в целом одним способом, например, setDisabled .

Это позволит избежать зацикливания компонентов и отключения / включения их одного за другим.

0 голосов
/ 17 февраля 2012

Вы можете использовать функцию cascade панели формы, которая является способом ExtJs, но если вы проверите исходный код функции каскада, вы увидите, что она также использует цикл for. Единственным преимуществом использования каскадной функции является то, что она будет работать и для форм с вложенными панелями. Я думаю, что ваша реализация не будет работать должным образом в таком случае.

...