使用jquery的最后一个密钥之后的密钥

时间:2012-05-09 16:23:40

标签: jquery

我正在编写一个简单的脚本来提取输入keyup事件的数据库信息。

我遇到的问题是每次用户按键时都会重复键盘事件。如何才能在按下最后一个键后才能使它工作?

我想我应该在每个键盘后使用像setTimeOut()这样的函数,但我不知道怎么样......你能用一个简单的例子吗?

抱歉我的英文不好:)

这是我想要做的事情:

$("input").keyup(function()
{
    var timer=setTimeout(function() {
    }, 1000);
    if(!timer)
    {
        //do .post ajax request
    }
});

3 个答案:

答案 0 :(得分:40)

var timer;

$("input").on('keyup', function() {
    clearTimeout(timer);  //clear any running timeout on key up
    timer = setTimeout(function() { //then give it a second to see if the user is finished
        //do .post ajax request //then do the ajax call
    }, 1000);
});

答案 1 :(得分:7)

你基本上就在那里。如果他们输入另一个字母,您只需要清除计时器;否则,你的回调将在1000毫秒后执行,无论他们是否继续输入。

这样的事情应该有效:

$("input").keyup(function (event)
{
    var self = this;
    if (self.timer)
        clearTimeout(self.timer);

    self.timer = setTimeout(function ()
    {
        self.timer = null;
        alert(self.value);
    }, 1000);

});

我只有警报,你会把你的ajax代码写回服务器。

答案 2 :(得分:0)

我认为如果你使用onchange事件执行此操作,则不需要进行时间间隔检查。每当您完成输入并更改焦点时。它会为你触发onchange事件

$("input").onchange(function()
{
   //extract database info
}