扣丁学堂HTML5培训分享HTML5 input输入实时检测以及延时优化

有个项目是,这么个情况,输入框,实时监测输入,触发请求。第一想法是input 上的onchange()方法,试了一下,不好用,是值等更改确认了,才会触发,不即时。本篇文章扣丁学堂HTML5培训小编给读者们分享一下HTML5 input输入实时检测以及延时优化,对HTML5开发技术感兴趣或者是想要学习HTML5开发的小伙伴就随小编来了解一下吧。

扣丁学堂HTML5培训分享HTML5 input输入实时检测以及延时优化

关于上述问题上网查了一下:

$("#fix").on('input propertychange', function(event){
});

方法的确可以用,但是实时更改。发送的频率有点快啊。

赶紧加个定时器setTimeout。

$("#fix").on('input propertychange', function(event){
 setTimeout(function(){ //延迟0.5s执行
 console.log($("#fix").val())
 },500);
});

问题又来了,定时器是异步,虽然延迟,但是还会执行,没啥改变。

后来又想到解绑unbind,bind,但是解绑的时间里获取不到键盘输入的事件。

当时第一想法是,触发事件-删除定时器-添加定时器-执行函数。发现还是不好,定时器删不掉,干脆就不执行了。

后来发现一种新方法,时间戳法。

原理就是,每次输入修改全局变量,时间戳,延迟0.5s监测 新的时间戳和和绑定的时间戳相等,就进行下一步。

-----html-----

<input type="text" id="fix">
------script-----
var last;
$("#fix").on('input propertychange', function(event){
 //"#fix为你的输入框
 last = event.timeStamp;
 //利用event的timeStamp来标记时间,这样每次事件都会修改last的值,注意last必需为全局变量
 setTimeout(function(){ //设时延迟0.5s执行
 if(last-event.timeStamp==0)
 //如果时间差为0(也就是你停止输入0.5s之内都没有其它的keyup事件发生)则做你想要做的事
 {
 console.log($("#fix").val())
 }
 },500);
});

以上就是扣丁学堂HTML5在线学习小编给大家分享的HTML5 input输入实时检测以及延时优化,希望对小伙伴们有所帮助,想要了解更多内容的小伙伴可以登录扣丁学堂官网咨询。

想要学好HTML5开发小编给大家推荐口碑良好的扣丁学堂,扣丁学堂有专业老师制定的HTML5学习路线图辅助学员学习,此外还有与时俱进的HTML5课程体系和HTML5视频教程供大家学习,想要学好HTML5开发技术的小伙伴快快行动吧。

H5基础课程:https://ke.qq.com/course/320523?flowToken=1008606【扫码进入HTML5前端开发VIP免费公开课】

注:点击(了解更多)进入课程直播间

相关推荐