2012-02-21 7 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에서 사용하지 않도록 설정된 입력란은 유효성이 확인되지 않고 제출되지 않습니다.

이전에 내가

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

숨기고 패널을 표시하여 여러 패널 양식을 구현하는 올바른 방법이 있나요 내선 2.X에서이 코드를 사용했다. 또는 폼에 동적으로 패널을 추가/제거 할 수 있습니까?

이런 종류의 양식을 구현하는 더 좋은 방법이 있습니까?

감사합니다.

답변

1

잘 꾸며지는 q.

사용하지 않는 입력란의 유효성을 검사하지 않아야합니다.

4.1에 수정 된 내용은 bug입니다. 어떤 4.x 버전을 사용하고 있는지는 잘 모르겠지만 마이그레이션 할 수없는 경우 Ext.form.field.Base의 isValid 메소드에 코드를 덮어 씌우면 4.1 코드와 일치시킬 수 있습니다. 다음과 같은 것 :

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

감사합니다. @Geronimo. 나는 src/form/CheckBoxGroup.js 파일의'noValue = Ext.isEmpty (errors)'와'isValid = me.disabled || Ext.isEmpty (오류)'. 하지만 여전히 같은 문제에 직면 해 있습니다. 무엇이 문제일까요? – nani1216

+0

버그 리포트에서 그 라인을 편집하면 CheckBox 필드에만 영향을 미칩니다. 위에서 언급 한 재정의를 코드에 추가하여 모든 양식 필드에 적용해야합니다. – Geronimo

+0

위의 코드를 삽입하면 비활성화 된 방사선 그룹 단추도 유효성이 검사되고 나머지 텍스트 필드는 양식을 제출하는 동안 유효성이 검사되지 않습니다. – nani1216