2013-08-13 2 views
0

전 extjs4에서 일하고 있습니다. 여러 개의 텍스트 상자, 라디오 버튼 및 기타 요소가있는 양식이 있습니다. 양식을 수정하면됩니다. 사용자가 양식에서 일부 편집을 한 경우 사용자가 변경 한 사항을 저장했는지 확인하기 위해 메시지 상자 창을 표시하려고합니다. 사용자가 수정하지 않고 양식을 닫으면 해당 메시지 상자가 나타나서는 안됩니다.extjs4에서 양식이 수정되었는지 여부를 확인하는 방법

me.getForm().on('dirtychange', function(form, isDirty) { 
      console.log(form.events); 
      if(isDirty) { 
        isChanged=true; 
       } 
       else { 
        isChanged=false; 
       } 
      }); 

그러나 양식이 수정되지 않았더라도 해당 설정은 항상 true로 설정됩니다. 양식이 수정되었는지 여부를 확인하여 확인 메시지 상자를 표시하는 방법.

답변

0

Ext.data.Model-property-dirty을 사용하여 레코드가 수정되었는지 확인할 수 있습니다.

form.getRecord().dirty 

수정하지 않고 레코드가 더러 우면이 필드를 사용하여 더러운 필드를 찾을 수 있습니다. . ; me.getForm() ('dirtychange'기능 (형태 IsDirty 사용) { \t \t CONSOLE.LOG (form.events)에 - 응답 sir..Actually 선생님 용

 if (form.isDirty()) { 
      var fields = form.getForm().getFields().items; 
      for (var i=0; i<fields.length; i++) { 
       if (fields[i].isDirty()) { 
        if (Ext.isDefined(fields[i].name)) { 
         alert(fields[i].name); 
        } 
       } 
      } 
     } 
+0

고맙습니다 나뿐만 시도 \t \t \t (IsDirty 사용) {isChanged = TRUE \t \t; \t \t} 만약 다른 \t \t \t \t { isChanged = 거짓; ,321 0 \t} \t \t}); 그러나 그것의 설정 isChanged 값은 항상 true로 설정됩니다. 그럼 내가해야 할 일이 뭐지? – user1722857

+0

양식에서 아무 것도 변경하지 않았다면 더티는 틀립니다. 어떤 분야가 더러운 지 알아 내려고 했습니까? 위의 편집을 참조하십시오. – player

+0

나는 당신이 제안한대로 따라 갔다. 그러나 "TypeError : form.getForm"이 함수가 아닙니다. [Break On This Error] \t var fields = form.getForm(). getFields(). items; " – user1722857

관련 문제