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)
没有成功。
也试图从回调中删除,有时候像我想要的那样工作,有时候不会。这就是为什么我认为有一个回调,当前一个完成时调用一个函数。
谢谢你的任何和所有的帮助。
我知道我错过了简单的东西:)这解决了这个问题。 谢谢你的帮助。 –