我正在使用Google Phone驗證庫來檢查數字是否對AJAX調用有效。如果該號碼無效,我需要下面的功能來防止表單提交。AJAX調用返回true後表單不提交
目前它阻止表單正確提交,但表單在返回true時不提交。真實聲明中的警報確實發生,但該表單仍未提交。我錯過了什麼?
$(document).ready(function(){
$('form#sellerForm').submit(validatePhoneNumber);
});
function validatePhoneNumber() {
var output = null;
var phoneNumber = $('#phone').val();
var node = document.getElementById('phoneOutput');
var country = $('#country').val();
if(country == -1){
output = translateNoCountry();
node.innerHTML = output;
event.preventDefault();
return false;
}
if(output == null){
//AJAX to get country code from country for var regionCode;
$.ajax({ type: "POST",
url: '/ajax/validate_phone.php',
data: {country: country},
cache: false,
success: function(result) {
var regionCode = jQuery.parseJSON(result);
try {
var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance();
var number = phoneUtil.parseAndKeepRawInput(phoneNumber, regionCode);
var isNumberValid = phoneUtil.isValidNumber(number);
if(!isNumberValid){//invalid number
output = translateInvalidePhone();
}
} catch (e) {
output = translateInvalidePhone();
}
if(output != null){
node.innerHTML = output;
event.preventDefault();
return false;
}else{
alert('Hello world');
return true;
}
}
});
event.preventDefault();
return false;
}
}
你有返回false;最後。 ..試圖定義文檔準備好的功能 – 2013-02-22 08:19:46
另外,你可以說'$('form#sellerForm')。submit(validatePhoneNumber);' - 如果只有它,你不需要匿名包裝函數確實是調用你的命名函數。關於你的實際問題,提示:Ajax是_asynchronous._ – nnnnnn 2013-02-22 08:21:36
@nnnnnn可能是OP想要在函數參數中發送事件,所以OP使用該方法.. – 2013-02-22 08:24:20