5

我在一个 HTML 页面上有一个输入,一个人会在其中输入一些东西,而我想要的是每次他们停止输入时调用一个函数。我知道 onkeypress 事件,但每次输入字符时都会调用它。这是我想要的一个例子:

  1. 人员在输入中键入“这是一个测试”
  2. 该人停止打字后,应调用函数 foo()
  3. 人员在输入中键入其他内容
  4. 该人停止打字后,应调用函数 foo()
  5. 重复....

这可能吗?

非常感谢!

4

4 回答 4

11

听 onkeyupevent。开始超时(您必须将“停止”定义为某个时间量,否则它将在每次按键时调用),并在超时时执行您的函数。

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

就像是...

var timer;

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

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

这段代码的具体外观取决于您在何处以及如何使用它......只是为了展示如何做到这一点。

于 2012-06-23T20:45:06.030 回答
0

首先,捕获“key up”事件,并将“stoppedTyping”变量设置为 true。然后设置一个计时器(在将其视为“停止输入”事件之前要等待多长时间)。

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

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

于 2012-06-23T20:48:24.257 回答
0

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

于 2012-06-23T20:49:10.833 回答
0

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

于 2012-06-23T20:45:09.477 回答