我需要使用JQuery来检测文本文件的更改,因此调用了一些ajax。
诀窍是我真的不想将此动作绑定到模糊或键盘事件;前者对于用户来说太麻烦,第二个是“太中等”:用户在ajax调用完成之前键入新密钥,因此用户体验不是很好(因此this SO question上的答案不是适用于我的情况。)
我需要的是一些代码,用于检查字段值是否已更改,但是定期(即每0.5秒)。我想在几个字段上使用相同的代码,调用不同的ajax函数,具有不同的频率,因此重用在这里真的是一个加分。
On Rails我有observe_field
(内部使用Prototype的Form.Element.observer,我认为)就是这样做的。我怎样才能在JQuery上完成相同的事情?
答案 0 :(得分:5)
我最终滚动了自己的jquery插件。
它(松散地)基于Mic的实施。
为它创建了一个github项目:
http://github.com/splendeo/jquery.observe_field
与Mic的主要区别在于:
快速摘要:
$(function() {
// Executes a callback detecting changes with a frequency of 1 second
$("#item1").observe_field(1, function( ) {
alert('Change observed! new value: ' + this.value );
});
});
答案 1 :(得分:2)
这是一个使用简单JS函数的解决方案:How do I grab the value from an html form input box as its being entered?
如果愿意,可以使用$(...)。focus(...)调用将其与jquery一起使用。
在场上的onfocus上,定期检查值是否已更改,如果是,则调用回调函数“after”。
当离开现场时,在onblur处停止投票。
即使用户在字段中进行了一些间接更改,例如撤消/重做或复制/粘贴,这也会有效。
答案 2 :(得分:0)
您可以设置一个计时器来检查输入的每个 n 秒,有一个jQuery插件可以更好地控制计时器。