输入的 jQuery 事件处理程序(类型文本)

Mev*_*via 3 jquery

我试图准备一些功能来过滤和排序通过 ajax 从数据库返回的数据,但我无法解决一个问题。

我在许多网站和 Web 应用程序上看到过非常有趣的处理文本输入字段的方式,它的工作方式就像你输入一些内容,当你输入时什么也没有发生,但如果你停下来 3 秒钟,它就会启动并执行 ajax 请求,所以我开始尝试许多内置 jquery 函数,但似乎没有一个是这样工作的。

keyup激发你提供给现场的每个角色,因此不行

change需要您单击字段外部才能启动,这是糟糕的解决方案

mouseleave不适用于文本输入字段,当您离开输入时什么也不会发生

mouseout好吧,这个有效,当我将鼠标移出字段时,它会启动,但每次用户调整他的研究以将鼠标移入和移出时,它仍然需要用户,这比change方法更糟糕

input, keypress,keydown工作原理相同,因为keyup它们只是外观上的差异,但方法保持不变,所以不用去

因此,我想要实现的方法是在您停止打字后一段时间启动的方法,并且不需要任何鼠标移动或单击,尽管我不知道如何处理它。

超文本标记语言

<input type="text" class="adjust" />
Run Code Online (Sandbox Code Playgroud)

JavaScript

$('.adjust').on('change', function() {
    alert('event has fired');
});
Run Code Online (Sandbox Code Playgroud)

如果有人愿意帮忙,我准备了一些初步的 jsfiddle 来进行实验:

http://jsfiddle.net/eag9e/

Arc*_*her 5

尝试这个...

var keyupTimeoutID = 0;

$('.adjust').on('input', function() {
    clearTimeout(keyupTimeoutID);
    keyupTimeoutID = setTimeout(function() {
        alert('event has fired');
    }, 1000);
});
Run Code Online (Sandbox Code Playgroud)

jsfiddle 示例

每次值发生变化时,它都会创建一个超时,并清除以前的任何超时。我将其设置为 1 秒,但您显然可以更改它以适应。