Javascript 在一个人停止键入后,我如何调用函数?

Javascript 在一个人停止键入后,我如何调用函数?,javascript,html,Javascript,Html,我在一个HTML页面上有一个输入,在这个页面上,一个人会键入一些东西,我想要的是在他们每次停止键入时调用一个函数。我知道onkeypress事件,但每次键入字符时都会调用它。下面是我想要的一个例子: 人员在输入中键入“这是一个测试” 此人停止键入后,应调用函数foo() 此人在输入中键入其他内容 此人停止键入后,应调用函数foo() 重复 这可能吗 非常感谢 收听onkeyupevent。开始一个超时(您必须将“stop”定义为某个时间量,否则它将在每次键控时被调用),并在超时中执行您的函数 如

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

  • 人员在输入中键入“这是一个测试”
  • 此人停止键入后,应调用函数foo()
  • 此人在输入中键入其他内容
  • 此人停止键入后,应调用函数foo()
  • 重复
  • 这可能吗


    非常感谢

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

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

    类似于

    var timer;
    
    function onKeyUpHandler(e){
        timer = setTimeout("foo()", 500)    
    }
    
    function onKeyDownHandler(e) {
        clearTimeout(timer);
    }
    

    此代码的确切外观取决于您在何处以及如何使用它。。。只是为了演示如何操作。

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

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

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

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

    如果我理解得很好,“停止键入”表示“在一定时间内没有击键”。
    在这种情况下,您必须使用计时器:

    定义“person stopped typing”…您可以处理失去焦点事件的鼠标移动。但不是人停typing@Oded-就像他们键入“这是一个测试”一样,然后停止按键盘上的键。所以可能会有第二次延迟,一秒钟?如果他们在思考呢?或者去另一个房间查找东西?Ixx-谢谢,这很好,但我似乎无法让它工作:啊,函数的名称是错误的!因为调用这些函数的函数具有相同的名称,所以它们会再次调用它们,直到出现堆栈超出错误。更改函数的名称。另一件事是JSFIDLE似乎没有在html之前声明javascript视图的内容,因此它找不到函数。试试这个,它可以工作: