我试图准备一些功能来过滤和排序从db通过ajax返回的数据,我无法找出一个问题。
我已经在许多网站和网络应用程序上看到了处理文本输入字段的非常有趣的方式,它的工作方式是你键入的东西,当你输入没有任何反应时,但如果你停止3秒钟它会启动并执行ajax请求,所以我开始尝试许多inbuild jquery函数,但似乎没有这样的工作。
keyup
会激活您提供给该字段的每个字符,因此不会
change
要求您点击字段外部以启动这是一个可怕的解决方案
mouseleave
无法处理文本输入字段,当您离开输入
mouseout
这个工作正常,当我将鼠标移动到场外时,它会启动,但每次调整他的研究以移动鼠标时,仍然需要用户,这甚至比change
更糟糕方法
input
,keypress
,keydown
的工作方式与keyup
的工作方式相同,只是有差异但方法保持不变,所以没有去
所以我希望实现的方法是在你停止输入后激活一段时间并且不需要任何鼠标移动或点击的方法,尽管我不知道如何接近它。
HTML
<input type="text" class="adjust" />
的Javascript
$('.adjust').on('change', function() {
alert('event has fired');
});
如果有人愿意提供帮助,我已准备好一些初步的jsfiddle来试验:
答案 0 :(得分:4)
试试这个......
var keyupTimeoutID = 0;
$('.adjust').on('input', function() {
clearTimeout(keyupTimeoutID);
keyupTimeoutID = setTimeout(function() {
alert('event has fired');
}, 1000);
});
<强> jsfiddle example 强>
每次值更改时都会创建超时,清除之前的超时。我把它设置为1秒,但你可以明显改变它以适应。