簡體   English   中英

jQuery模糊功能:先運行第二個功能。 怎么樣?

[英]Jquery blur function: Run second function after first. How?

我正在嘗試根據第一個結果運行第二個函數。

$('#email').blur(function () {

id = $(this).attr('id');
$(myObj).data(id,""); 

is_email(id); // If it's a valid email, it does this: $(myObj).data(id,"ok");

// Now if it's a valid email address, I want to run a second function to see if
// it's already taken.

if ($(myObj).data("email") == "ok") {

    $(myObj).data("email",""); // Resets the value...
    is_taken(id, "employees", "email"); // To test it again...

}   

});

第一部分工作正常,但是當我進入if($(myObj)....時,它永遠不會被檢查。我假設是因為這是在同一模糊事件上設置的。我想通過將其放在第一個函數之后,它會在第一個函數完成后檢查該對象的值,我猜是在第一個函數有機會返回該值之前檢查它的值是否為“ ok”。

由於這些函數使用AJAX,因此在第一個AJAX調用返回並設置數據值之前,將調用第二個函數。 AJAX中的關鍵字母是第一個'A'-異步,這意味着代碼流將繼續,而無需等待響應。 您可以通過將is_email函數更改為接受回調來避免這種情況(並避免使用data存儲中間結果)。 當AJAX調用完成時,根據第一個調用的結果,運行第二個函數作為回調。

function is_email( id, type, check, callback )
{
     var that = this;
     $.post( '/email/check', $('#'+id).val(), function(result) {
           if (result == 'ok') {
                if (callback) {
                   callback.call(that,id,type,check);
                }
           }
     }
}

用作:

is_email(id, "employees", "email", istaken);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM