解决在手机端H5页面中keyup延迟问题
项目开发过程中,需要在keyup方法中使用aja动态x获取后台数据;然鹅,在此过程中会发现keyup延迟现象,这就涉及到键盘数字的显示速度快于ajax响应速度,这里说的就是解决这个问题的一个方法。当然,解决问题的方法有很多,鄙人不才,在此只列举一种,供大家参考:
注意,timeStamp 事件属性可返回一个时间戳。指示发生事件的日期和时间(从 epoch 开始的毫秒数)。epoch 是一个事件参考点。在这里,它是客户机启动的时间。并非所有系统都提供该信息,因此,timeStamp 属性并非对所有系统/事件都是可用的。
直接上代码
//解决keyup延迟问题
$("#pay_money").on("keyup",function(e){
$this = $(this);
last = e.timeStamp;
setTimeout(function(){
var vall = $this.val();
if(vall>0){
if(last-e.timeStamp===0){
$.post("{:U('Shop/do_pay_return')}",{money:vall,id:shop_id},function(data){
if(data.code!=1){
alert(data.info);
}else{
var ss = data.data.money+'元';
var ff = data.data.fan;
$("#total_money").html(ss);
$("#total_jifen").html(ff);
$("#daizhifu").html(vall);
$(".xianjin>form>div:nth-child(2)").fadeIn();
}
})
}
}else{
$("#daizhifu").html(0);
$(".xianjin>form>div:nth-child(2)").css("display","none");
}
},200)
})
- 上面代码的作用就是通过获取用户输入的金额,ajax动态提交给后台,返回对应的奖励金额。通过事件发生前后的时间对比,然后设置延时操作,即可解决keyup交互时的延时问题。
- 上面(1)输入框输入金额,在(2)位置动态展示奖励金额,该js代码即可实现交互时输入数字时ajax延迟处理的问题,以及输入数字之后,再删除,会发现ajax未进行响应。