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를 반환하지만 필드는 유효하지 않은 것으로 표시됩니다.
지금 내 질문에 어떻게 양식을 위의 코드와 함께 잘못된 것으로 설정할 수 있습니까?
도움 주셔서 감사합니다.
버전 4.0.2a에서는 formBind가 제대로 작동하지 않습니다. [이 warkaround]보십시오 (http://stackoverflow.com/questions/6795511/extjs-simple-form-ignores-formbind/6798704#6798704). –
문제는 formBind config가 아니라고 생각합니다. 해결 방법에서는 vtypes를 사용했지만이 방법은 사용하지 않습니다. 저장 버튼을 클릭하면'isValid()'함수는 항상'true'를 반환합니다. FormBind 메서드와는 아무런 관련이 없다고 생각합니다. – shub
Form.isValid는'form._boundItems'에 캐시 된 잘못된 필드를 가질 수 있으므로 항상 true를 반환 할 수 있습니다. 따라서 내가 게시 한 링크와 동일한 문제 일 수 있습니다. –