0
我必須缺少一些簡單的東西,或者我這樣做完全錯誤。我的目標很簡單。我想動畫.show().hide()和我使用回調等待一個動畫完成,我得到兩個問題。jQueryUI .show()回調不會等待動畫結束
- 動畫觸發兩次
- 回調執行不久/不等待第一個動畫結束,
這裏是我的jQuery代碼:
$('#miles').on({
keyup: function(){if($(this).hasClass('error')){$(this).removeClass('error',animSpeed);}},
focusin: function(){thisTime=$(this).val();if($(this).hasClass('error')){$(this).removeClass('error',animSpeed);}if($(this).val()=='miles'){$(this).val('');}},
focusout: function(){
if($(this).val()==''){$(this).val('miles');}
else if(thisTime!=$(this).val()){
if($(this).val().match(/^[0-9]+$/)&&$(this).val()>0){
$.post('include/process.php',{q:'saveMiles',e:$('#email').val(),w:$(this).val()},function(json){
if(json.error==null||json.error==undefined){
$('#saved').html('last saved '+json.date);
}else{
$(this).addClass('error',animSpeed);
if(json.type=='notaNumber'){$('#errorBox>p').hide('fade',animSpeedErr,function(){$('.'+json.type).show('fade',animSpeedErr);})};
}
},"json");
}else{
console.log('now');
$(this).addClass('error',animSpeed);
$('#errorBox>p').hide('fade',animSpeedErr,function(){console.log('now1');
if($('#miles').val()==0){console.log('now2');$('.notZero').show('fade',animSpeedErr);}
else{console.log('now3');$('.notaNumber').show('fade',animSpeedErr);}
});
}
}
}
});
var animSpeed=700;
var animSpeedErr=350;
json.type = what kind of error to show
#errorBox> p有顯示:無;在CSS中聲明
此代碼的功能:檢查#miles是否爲數字,如果數字大於0,如果不是,則隱藏以前的錯誤並顯示當前錯誤。如果我運行該腳本,我得到這個控制檯:
now
now1
now2
now1
now2
now1
now2
now1
now2
Script是活在http://developer.sodobniinternet.eu/concertdrive。只需在「英里」輸入框中輸入0或字母,您就會看到問題。
我試着用:
.stop(true,true)
沒有成功。
也試圖從回調中刪除,有時候像我想要的那樣工作,有時候不會。這就是爲什麼我認爲有一個回調,當前一個完成時調用一個函數。
謝謝你的任何和所有的幫助。
我知道我錯過了簡單的東西:)這解決了這個問題。 謝謝你的幫助。 –