在一个人停止输入后如何调用函数?

时间:2012-06-23 20:40:47

标签: javascript html

我在HTML页面上有一个输入,其中一个人会输入内容,而我想要的是每次停止输入时都要调用的功能。我知道onkeypress事件,但每次输入一个字符时都会调用它。这是我想要的一个例子:

  1. 人物类型“这是输入
  2. 的测试”
  3. 此人停止输入后,应调用函数foo()
  4. 人在输入中输入其他内容
  5. 此人停止输入后,应调用函数foo()
  6. 重复....
  7. 这可能吗?

    非常感谢!

4 个答案:

答案 0 :(得分:10)

收听onkeyupevent。开始超时(您必须将“停止”定义为一些时间量,否则将在每个键盘上调用),并在超时时执行您的功能。

如果在计时器运行时调用onkeydown,请将其停止。

像...一样的东西。

var timer;

function onKeyUpHandler(e){
    timer = setTimeout("foo()", 500)    
}

function onKeyDownHandler(e) {
    clearTimeout(timer);
}

此代码的完整外观取决于您使用它的位置和方式......只是为了说明这样做的方法。

答案 1 :(得分:0)

只需设置一个javascript计时器即可在onKeyPress上启动/重启。然后定义定义“停止输入”并运行脚本的时间长度。

答案 2 :(得分:0)

首先,捕获“key up”事件,并将“stoppedTyping”变量设置为true。然后设置一个计时器(在考虑这个“停止输入”事件之前你想等多久)。

如果在计时器关闭之前,您捕获“按键”事件,请设置“stoppedTyping = false”

当计时器到期时,您的计时器回调可以检查“stoppedTyping”的值。如果这是真的,那么用户已经停止输入(或者更确切地说,在计时器的持续时间内没有输入任何新的字符)。如果它是假的,那么他们还没有停止输入 - 他们必须在你的计时器运行时输入至少一个字符。

答案 3 :(得分:0)

如果我理解得很好,“停止输入”意味着“在一定时间内没有按键”。 在这种情况下,您必须使用计时器:http://jsfiddle.net/xnghR/1/