![](/img/trans.png)
[英]How to run a jquery function in first click and another function in second click
[英]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.