我试图准备一些功能来过滤和排序通过ajax从数据库返回的数据,但我无法解决一个问题。
我在许多网站和 Web 应用程序上看到过非常有趣的处理文本输入字段的方式,它的工作方式就像你输入一些内容,当你输入时什么也不会发生,但如果你停下来 3 秒钟,它就会启动并执行 ajax请求,所以我开始尝试许多内置 jquery 函数,但似乎没有一个是这样工作的。
keyup
会在您提供给字段的每个字符上触发,因此无需执行
更改
需要您单击字段外部才能启动,这是一个糟糕的解决方案
mouseleave
不适用于文本输入字段,离开输入时不会发生任何事情
mouseout
很好用,当我将鼠标移出字段时它会启动,但每次用户调整他的研究以将鼠标移入和移出时仍然需要用户,这比 更糟糕>更改
方法
input
、keypress
、keydown
与 keyup
的工作原理相同,它们只是有外观上的差异,但方法保持不变一样,所以不去
因此,我想要实现的方法是在您停止键入一段时间后启动的方法,并且不需要任何鼠标移动或单击,尽管我不知道如何实现它。
HTML
<input type="text" class="adjust" />
Javascript
$('.adjust').on('change', function() {
alert('event has fired');
});
如果有人愿意帮忙,我准备了一些初步的 jsfiddle 来试验:
最佳答案
试试这个...
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/