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


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

求指点.

jquery Ajax JavaScript

大概是帽子 10 years, 2 months ago

那就不要keyup了,blur吧。

厉害了我的萌比 answered 10 years, 2 months ago


 var timeout;
$input.on('input', function(e){
  clearTimeout(timeout);
  timeout = setTimeout(function(){
    $.post(...);
  },5000);
});

KI’KI answered 10 years, 2 months ago

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

klaifoq answered 10 years, 2 months ago

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

幾千几万一夜華 answered 10 years, 2 months ago

Your Answer