2013-02-22 55 views
0

我正在使用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; 
} 
} 
+1

你有返回false;最後。 ..試圖定義文檔準備好的功能 – 2013-02-22 08:19:46

+0

另外,你可以說'$('form#sellerForm')。submit(validatePhoneNumber);' - 如果只有它,你不需要匿名包裝函數確實是調用你的命名函數。關於你的實際問題,提示:Ajax是_asynchronous._ – nnnnnn 2013-02-22 08:21:36

+0

@nnnnnn可能是OP想要在函數參數中發送事件,所以OP使用該方法.. – 2013-02-22 08:24:20

回答

1

什麼用的,

event.preventDefault(); 
return false; 
在最後一行

。我認爲這可能是問題所在。

+0

如果刪除該行,則表單將不經過AJAX調用而提交。所以它也提交錯誤。 – vinsanity38 2013-02-22 08:24:07

+0

@ vinsanity38你可以在開始時阻止默認動作。 – 2013-02-22 08:28:19

+0

我只想要默認的動作被阻止,如果它失敗的功能雖然 – vinsanity38 2013-02-22 08:35:59

0

請勿使用event.preventDefault();在你最後驗證的PhoneNumber()函數

它阻止所有的默認回發