나는 작동하는 custom AJAX vtype을 사용합니다. 그러나 나는 extjs 문서 노트를 보았습니다필드를 잘못 표시하기
"참고 :이 메서드는 필드의 유효성 검사 또는 isValid 메서드로 값이 유효성 검사를 통과하면 false를 반환하지 않으므로 단순히 필드를 유효하지 않은 것으로 표시하면 양식 제출이 금지되지 않습니다. Ext.form.action.Submit.clientValidation 옵션 세트와 함께 제출됩니다. "
form.isValid()가 false를 반환하도록 필드를 유효하지 않은 것으로 표시하는 방법은 무엇입니까? 내 VTYPE : 당신이 clientValidation
의 정의를 보면
Ext.apply(Ext.form.VTypes, {
username: function(value, field){
var conn = new Ext.data.Connection();
conn.request({
url: 'test.php',
params:{email:value},
method: 'POST',
success: function(responseObject){
var resp = responseObject.responseText;
if (resp == 0) {
field.markInvalid('This email is invalid or already registered!');
} else if (resp == 1) {
field.clearInvalid();
}
},
failure: function(){
Ext.Msg.show({title: 'Error', msg: 'Connection error!',});
}
});
return true;
}
});
그런 양식을 제출하면 비동기가 중단됩니다. :(양식에 대한 수동 검증을 피하기를 선호합니다. 이론적으로는 vtype 검사를 넘어서서 isValid = false를 설정하는 함수를 사용하는 것이 훨씬 쉽습니다. – Alex
ajax 성공 호출을 사용하지 않고는 왜냐하면 그것은 본질적으로 비동기이기 때문에 ... 폼 유효성 검사는 true를 리턴하고 폼은 아약스 요청이 완료되기 전에 제출됩니다. 당신은'submit()'메소드를 오버라이드하거나, 모든 타입을 체크하고 강제로 호출해야합니다 ajax 요청을 수동으로 처리하고, 콜백 함수를 인수로 사용하도록 강제합니다. – JamesHalsall