Javascript jquery:用频率观察字段

Javascript jquery:用频率观察字段,javascript,jquery,ruby-on-rails,prototypejs,Javascript,Jquery,Ruby On Rails,Prototypejs,我需要使用JQuery来检测文本文件上的更改,因此调用了一些ajax 诀窍是,我真的不想将此操作绑定到模糊或关键帧事件;前者对用户来说太麻烦,而第二个则“太不协调”:用户在ajax调用完成之前键入新的键,因此用户体验不好(因此,关于的答案不适用于我的案例) 我需要的是一些检查字段值是否已更改的代码,但要定期(即每0.5秒一次)。我希望在几个字段上使用相同的代码,以不同的频率调用不同的ajax函数,因此重用在这里确实是一个优势 在Rails上,我有一个observe\u字段(我想是内部使用Prot

我需要使用JQuery来检测文本文件上的更改,因此调用了一些ajax

诀窍是,我真的不想将此操作绑定到模糊或关键帧事件;前者对用户来说太麻烦,而第二个则“太不协调”:用户在ajax调用完成之前键入新的键,因此用户体验不好(因此,关于的答案不适用于我的案例)

我需要的是一些检查字段值是否已更改的代码,但要定期(即每0.5秒一次)。我希望在几个字段上使用相同的代码,以不同的频率调用不同的ajax函数,因此重用在这里确实是一个优势


在Rails上,我有一个
observe\u字段(我想是内部使用Prototype的),就是这样做的。我怎样才能在JQuery上完成同样的事情呢?

你可以设置一个计时器,每n秒检查一次输入,JQuery有一个插件,它可以对计时器进行更多的控制


这里有一个使用简单JS函数的解决方案:
如果愿意,可以使用$(…).focus(…)调用将其与jquery一起使用

在字段的onfocus上,定期检查值是否已更改,如果已更改,则调用回调函数“after”
离开字段时,在onblur处停止轮询


即使用户在字段中进行了一些间接更改,如撤消/重做或复制/粘贴,这也会起作用。

我最终推出了自己的jquery插件

它(松散地)基于Mic的实现

已为其创建github项目:

与Mic的主要区别在于:

  • 我在几个地方使用jQuery的方法,而不是本地方法
  • 我不启用/停用模糊和聚焦检测。这样我就可以跟踪代码所做的更改(rails的observe_字段就是这样做的,我想模仿它)
  • 我在每次启动时重置计时器。为了更好地使用移动设备,比如iphone,我需要这个
快速片段:

$(function() {
  // Executes a callback detecting changes with a frequency of 1 second
  $("#item1").observe_field(1, function( ) {
    alert('Change observed! new value: ' + this.value );
  });
});

谢谢Mic,我将使用你的实现作为一个模板。我很欣赏你推出了自己的插件-但是根据用户何时停止键入而不是按固定间隔进行检查是否更有意义?我见过的其他插件就是基于这个:Eum。。。这就是我所说的“每次按键时定时器都会重置”的意思。