我有一个jQuery Ajax请求,我想用文本输入调用它,因此我将其嵌套在里面keyup(function()。这很好。
keyup(function()
$("#text_box").keyup(function() { //AJAX REQUEST });
但这有时表现为越野车。当我非常快速地输入一些文本时,我得到的输入单词的结果中省略了原始输入单词的最后几个字母(可能是浏览器的某些错误)。我希望在没有输入活动持续一秒钟的情况下发送ajax请求,如果我很快输入文本并休息一秒钟(意味着我进行了输入)。我怎样才能做到这一点?
听起来好像是从先前的ajax调用中获得了结果。与setTimeout和一起使用计时器clearTimeout。
setTimeout
clearTimeout
var timer = null; $("#text_box").keyup(function() { if(timer) { clearTimeout(timer); } timer = setTimeout(someFunction, someDelay); });
在哪里someFunction进行ajax调用的函数,someDelay是用户键入后要等待的延迟(以毫秒为单位),以ms为单位。
someFunction
someDelay