jQuery 유효성 검사 플러그인 및 jQuery 양식 플러그인과 함께 사용되는 원격 유효성 검사 규칙에 문제가 있습니다.jQuery 원격 유효성 검사 경쟁 조건
그래서 jQuery 양식 플러그인을 사용하여 양식 제출을 가로 채고 유효성 검사가 실패하면 양식이 제출되지 않습니다. 그러나 원격 규칙이 이미 검증 된 경우 (서버로부터의 응답을 기다리는 중) 폼은 어쨌든 전송됩니다.
모든 것이 잘 작동하기 전이나 후에, 양식에 대한 다른 규칙과 마찬가지로. 그러나 원격 규칙에 대한 GET의 중간에 있다면 $ ('# myform'). validate.form()이 true를 반환하고 양식이 제출됩니다.
그래서 코드는 다음과 같습니다
$('#myform').ajaxForm({
beforeSubmit: processRequest,
success: processResponse,
dataType: 'json'
});
$('#myform').validate({
rules: {
onkeyup: false,
title: {
required: true,
remote: { url: 'check_title.php' }
}
}
});
function processRequest(formData, jqForm, options) {
if (!$('#myform').validate.form()) {
// cancel the form submition
return false;
}
// do some stuff
return true;
}
원격 검증을 보류 기다리고 강제 할 수있는 방법이 있나요?
또는 유효성 검사 규칙에서 'onsubmit : true'만 남겨 둘 수 있으므로 유효성 검사가 제출시에만 발생하고 validate(), form()에 대한 값을 반환하기 전에 완료 될 때까지 기다릴 수 있습니다. 그러나 저의 마지막 수단입니다.
양식을 제출하기 전에 processRequest가 호출되기 때문에 ajaxForm 옵션을 사용하면이 옵션을 사용할 수 없습니다. 하지만 그것은 $ .ajax 매개 변수를 사용할 수있는 원격 규칙에서 'async : false'를 시도하는 아이디어를주었습니다. 작동하지만 최적화가 완료 될 때까지 양식의 모든 UI 상호 작용이 차단되어 최적 상태가 아니므로 최적 상태는 아닙니다. 나는 유효성 검사 옵션으로 'onsubmit : true'만을 사용하는 것이 좋습니다. – mtourne