2012-02-21 1 views
1

У меня есть 3 панели, и каждая панель будет иметь 7 - 10 полей.Extjs 4 динамически добавляет несколько панелей к форме

Основная панель формы содержит поле комбо и 3 панели.

Основываясь на выбранном комбинированном значении, я скрываю оставшиеся 2 панели и показываю одну панель.

Все эти три панели имеют allowBlank: false валидации для полей.

При отправке формы скрытые поля также проверяются и препятствуют отправке формы. Поэтому я хочу отключить скрытые поля. Я использую этот код.

question_multiple_option.query('.component').forEach(function(c){c.setDisabled(true);}); 

Но в случае отключенных полей EXT 4.X также проверяются при отправке формы.

В Ext 2.X и 3.X отключенные поля не проверяются и не отправляются.

ранее я использовал этот код в доб 2.X

Ext.getCmp('option').cascade(function(comp){ 
         if (comp.isFormField) { 
          //comp.enable(); 
           comp.disable(); 
         } 
        }); 

Является ли это правильный способ реализации формы с несколькими панелями по шкуре и показывая панели. Или как я могу добавить/удалить панель в форму динамически?.

Есть ли лучший способ реализовать этот вид формы.

спасибо.

ответ

1

Красиво сформулированные q.

Не предполагается проверка отключенных полей.

Об этом было установлено bug, которое было исправлено в 4.1. Я не уверен, как он выглядит в любой версии 4.x, которую вы используете, но вы можете добавить переопределение в свой код к методуExt.form.field.Base, чтобы соответствовать коду 4.1, если вы не можете выполнить миграцию. Что-то вроде этого:

Ext.override(Ext.form.field.Base, { 
    isValid : function() { 
     var me = this; 
     return me.disabled || Ext.isEmpty(me.getErrors()); 
    } 
}); 
+0

Спасибо @Geronimo. Я заменил строку no 370 в файле src/form/CheckBoxGroup.js 'isValid = Ext.isEmpty (errors)' с 'isValid = me.disabled || Ext.isEmpty (ошибки) '. Но все же я столкнулся с той же проблемой. В чем проблема? – nani1216

+0

Редактирование этой строки, как указано в отчете об ошибке, будет влиять только на поле CheckBox. Вы должны добавить переопределение, упомянутое выше в своем собственном коде, чтобы оно применимо ко всем полям формы. – Geronimo

+0

Если я помещаю вышеуказанный код, также отключены кнопки радиогруппы, а оставшиеся текстовые поля не проверяются при отправке формы – nani1216

Смежные вопросы