2012-02-15 6 views
1

FormPanel의 내 필드에 수신기를 추가했습니다 (blur). 내선 JS의 문서가 설명양식을 잘못된 것으로 표시하십시오.

listeners:{ 
    scope: this, 
    blur: function(field, value){ 
     var username = field; 
     if (username.getValue() == '') { 
      username.markInvalid('This field is required'); 
     } else { 
      Ext.Ajax.request({ 
       url: 'users/validateForm', 
       method: 'POST', 
       params: 'username=' + username.getValue(), 
       success: function(response, opts) { 
        var jsonData = Ext.decode(response.responseText); 
        if (jsonData.msg.username != '') { 
         username.markInvalid(jsonData.msg.username); 
        } 
       } 
      }); 
     } 
    } 
} 


buttons: [{ 
    text: 'Save', 
    handler: function() { 
     var form = this.up('form').getForm(); 
     if (form.isValid()) { 
      alert('test'); 
     } 
    }, 
    formBind:true 
},{ 
    text: 'Cancel' 
}] 

으로, markInvalid() 기능은 현장 자체에 영향이 이벤트는 다음과 같이 내가 양식 유효성 검사를 실행할 발생합니다. 그러나 양식이 유효하지 않은 경우 제출 버튼을 사용할 수 없도록 양식을 올바르지 않게 설정하려고합니다. 현재 필드의 isValid()는 항상 true를 반환하지만 필드는 유효하지 않은 것으로 표시됩니다.

지금 내 질문에 어떻게 양식을 위의 코드와 함께 잘못된 것으로 설정할 수 있습니까?

도움 주셔서 감사합니다.

+0

버전 4.0.2a에서는 formBind가 제대로 작동하지 않습니다. [이 warkaround]보십시오 (http://stackoverflow.com/questions/6795511/extjs-simple-form-ignores-formbind/6798704#6798704). –

+0

문제는 formBind config가 아니라고 생각합니다. 해결 방법에서는 vtypes를 사용했지만이 방법은 사용하지 않습니다. 저장 버튼을 클릭하면'isValid()'함수는 항상'true'를 반환합니다. FormBind 메서드와는 아무런 관련이 없다고 생각합니다. – shub

+1

Form.isValid는'form._boundItems'에 캐시 된 잘못된 필드를 가질 수 있으므로 항상 true를 반환 할 수 있습니다. 따라서 내가 게시 한 링크와 동일한 문제 일 수 있습니다. –

답변

1

양식과 함께 사용할 수있는 hasInvalidField() 방법을 사용할 수 있어야합니다. 워드 프로세서

var form = this.up('form').getForm(); 
if (form.hasInvalidField()) { 
    alert('test'); 
} 

: 예를 들어 양식이 유효하지 않은 필드를 포함하는 경우

true를 반환합니다.

+0

양식에 잘못된 필드가 있지만 hasInvalidField() 함수는 항상 false를 반환합니다. – shub

관련 문제