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

标签 jquery

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

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

keyup 会在您提供给字段的每个字符上触发,因此无需执行

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

mouseleave 不适用于文本输入字段,离开输入时不会发生任何事情

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

inputkeypresskeydownkeyup 的工作原理相同,它们只是有外观上的差异,但方法保持不变一样,所以不去

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

HTML

<input type="text" class="adjust" />

Javascript

$('.adjust').on('change', function() {
    alert('event has fired');
});

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

http://jsfiddle.net/eag9e/

最佳答案

试试这个...

var keyupTimeoutID = 0;

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

<强> jsfiddle example

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

关于输入的 jQuery 事件处理程序(类型文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23289944/

相关文章:

javascript - 如何使用 javascript 从客户端获取 c# timezoneinfo 类的客户端时区 ID

jquery - OwlCarousel 2 .goTo 事件不起作用

javascript - jQuery 延迟 fadeIn 花费的时间比预期的要长

javascript - Jquery Tokeninput 和动态嵌套表单

jquery - 居中对齐 CSS 框翻转动画 UL

javascript - 浏览器直接在javascript中调用手机

jQuery 传播问题

javascript - 数字 = parseInt(数字);需要从 rel 属性中获取非数字

javascript - JQuery - 不熟悉的符号

javascript - 自动刷新ejs页面的方法