我目前正在驗證一些輸入clientside。當用戶提交表單,我要檢查的值的形式輸入,然後做一些事情,一旦所有的檢查完成等待,直到多個函數,可能或可能不會調用Ajax內部完成jQuery?
$('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()函數,但做()函數不等到所有的validate_input功能完全完成(包括AJAX回調,從所謂的validate_input)
$.when(
validate_input(input1),
validate_input(input2)
).done(function(){
//code here
});
我怎麼會等到所有validate_input功能齊全(有任何可能的AJAX回調完成),執行進一步的代碼之前?
就是這樣,我並沒有返回Ajax對象! – mrl 2014-09-03 21:29:41