2014-04-25 54 views
1

我试图准备一些功能来过滤和排序从数据库通过ajax返回的数据,我不能找出一个问题。jQuery事件处理程序的输入(键入文本)

我在许多网站和网络应用程序中看到了处理文本输入字段的非常有趣的方式,它以您键入内容的方式工作,而您在输入时却什么也没有发生,但如果您停下来3秒钟,它就会触发并进行操作ajax请求,所以我开始尝试许多inbuild jquery函数,但没有一个似乎以这种方式工作。

keyup火上每次提供给栏中的了所以没有去

change从您需要到现场之外单击火起来是可怕的解决方案

mouseleave与文本输入字段不工作,当你离开输入时什么也没有发生

mouseout这个工作正常,当我将鼠标移动到场外时,它仍然需要用户每次调整他的研究以移动鼠标进入和退出,这甚至是最差的然后change方法

inputkeypress,​​的工作方式相同keyup他们只是有美容的差异,但方法保持不变,所以没有去

所以方法我想实现的是,经过触发了一段时间的一个你停止打字,并且不需要任何鼠标移动或点击,但我不知道如何处理它。

HTML

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

的Javascript

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

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

http://jsfiddle.net/eag9e/

+0

'input'将是最好的事件来处理,因为这也会触发粘贴(使用鼠标)或影响现场的外部元素。所有你需要做的就是添加一个定时器,每当用户输入任何东西时都会被重置。 –

回答

3

尝试......

var keyupTimeoutID = 0; 

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

jsfiddle example

它创建了一个超时每次值发生变化,清除所有以前的超时。我把它设置为1秒,但你显然可以改变它以适应。

+0

这正是我一直在寻找的,完美的,现在我知道他们是怎么做到的;)谢谢你的帮助 – Mevia

+0

没问题 - 很高兴帮助:) – Archer

相关问题