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

时间:2014-04-25 10:02:47

标签: jquery

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

我已经在许多网站和网络应用程序上看到了处理文本输入字段的非常有趣的方式,它的工作方式是你键入的东西,当你输入没有任何反应时,但如果你停止3秒钟它会启动并执行ajax请求,所以我开始尝试许多inbuild jquery函数,但似乎没有这样的工作。

keyup会激活您提供给该字段的每个字符,因此不会

change要求您点击字段外部以启动这是一个可怕的解决方案

mouseleave无法处理文本输入字段,当您离开输入

时没有任何反应

mouseout这个工作正常,当我将鼠标移动到场外时,它会启动,但每次调整他的研究以移动鼠标时,仍然需要用户,这甚至比change更糟糕方法

inputkeypresskeydown的工作方式与keyup的工作方式相同,只是有差异但方法保持不变,所以没有去

所以我希望实现的方法是在你停止输入后激活一段时间并且不需要任何鼠标移动或点击的方法,尽管我不知道如何接近它。

HTML

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

的Javascript

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

如果有人愿意提供帮助,我已准备好一些初步的jsfiddle来试验:

http://jsfiddle.net/eag9e/

1 个答案:

答案 0 :(得分:4)

试试这个......

var keyupTimeoutID = 0;

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

<强> jsfiddle example

每次值更改时都会创建超时,清除之前的超时。我把它设置为1秒,但你可以明显改变它以适应。