根据keyup 来ajax表单来验证数据时, 如何只检查最后一次keyup, 而不是每次keyup.

我要在每次keyup事件时用ajax来验证数据. 但在验证时如果有其他keyup时间就停止当前, 执行最后一次.
我试过5秒后, 但5秒后还是执行了全部的keyup事件.

求指点.

阅读 5k
4 个回答
var timeout;
$input.on('input', function(e){
  clearTimeout(timeout);
  timeout = setTimeout(function(){
    $.post(...);
  },5000);
});

那就不要keyup了,blur吧。

可以考虑事件节流方式,如:
你规定500毫秒以后执行ajax,那么你可以设置一个timer,如果第一次keyup和第二次keyup的时间小于500则清除timer,否则执行timer

keyup事件会进入队列,总归要执行的,你设置一个状态位,keyup之后关闭,ajax结束以后开启,不知你是不是这个意思

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题