【发布时间】:2014-09-03 18:24:53
【问题描述】:
我目前正在客户端验证一些输入。当用户提交表单时,我想检查表单输入的值,然后在所有检查完成后做一些事情
$('form').submit(function() {
var input1 = $('form #input1');
var input2 = $('form #input2');
//validate both input values
validate_input(input1);
validate_input(input2);
//wait until all validation complete to execute code here
return false;
});
这里,“validate_input”函数将检查输入值。如果它通过了初始检查(例如字符长度),那么它将发出 AJAX 请求以进行进一步验证(例如检查用户名是否被使用)。像这样的:
function validate_input(input){
value=input.val();
if (value.length<4){
//code to execute if input is too short
}
else {
$.ajax({
type: 'get',
url: check_input_url,
data: input.serialize(),
success: function(data){
if (data=="invalid") {
//code to execute if invalid
} else {
//code to execute if valid
}
}
});
}
}
我目前正在使用 jQuery.when() 和 .done() 函数,但是 done() 函数不会等到所有 validate_input 函数都完成后(包括从 validate_input 调用的 AJAX 回调)
$.when(
validate_input(input1),
validate_input(input2)
).done(function(){
//code here
});
如何等到所有 validate_input 函数完成(完成任何可能的 AJAX 回调),然后再执行进一步的代码?
【问题讨论】:
标签: javascript jquery ajax jquery-deferred