Jquery:如何检测内容更改? (寻找 keyup() 的替代品)
Posted
技术标签:
【中文标题】Jquery:如何检测内容更改? (寻找 keyup() 的替代品)【英文标题】:Jquery : how can I detect content changes ? (looking for an alternative to keyup() ) 【发布时间】:2012-11-30 14:53:06 【问题描述】:我使用这个简单的 Jquery 代码从 div 中获取元素,然后通过 php 脚本对其进行更改:
$(document).ready(function()
$("#description").keyup(function()
var recherche = $(this).val();
$.ajax(
type : "GET",
url : "result.php",
data : motclef: recherche,
success: function(server_response)
$("#resultat").html(server_response).show();
);
);
);
问题是可以在不按任何键(复制/过去...)的情况下发生一些更改。我尝试过 .change() 但它仅在元素焦点丢失时触发。
【问题讨论】:
您跟踪值并比较它们input
事件就是你想要的。
您可能希望考虑延迟 AJAX 调用,因此在发送请求之前,按键之间必须延迟一定的时间;每个keyup
事件发送一个请求可能会导致发送大量请求。
【参考方案1】:
您可以像这样在一次调用中告诉 jQuery 绑定到多个事件。 进入方法后,您可以根据事件类型过滤行为。在处理粘贴时,通常最好稍微延迟函数调用,以允许浏览器首先完成所需的一切。
编辑
我已经根据这个 *** answer 更新了答案,以便处理自动完成。
$("#description").on("keyup paste cut focus change blur",function (event)
var $this = $(this),
delay = 0
// Add delay for cut/paste
if (event.type === "paste" || event.type === "cut")
delay = 5;
// Record the current value of the text box.
if (event.type === "focus" || event.type === "change")
this.previousvalue = this.value;
// Trigger the change event if the value is now different.
if (event.type === "blur")
if (this.previousvalue !== this.value)
$this.change();
return false;
window.setTimeout(function ()
var recherche = $this.val();
$.ajax(
type : "GET",
url : "result.php",
data : motclef: recherche,
success: function(server_response)
$("#resultat").html(server_response).show();
);
, delay);
);
【讨论】:
谢谢,但实际上我复制过去并不是唯一的问题,我也在使用自动完成程序,请问您知道如何将其包含到您的代码中吗? 谢谢你我试过了,但它不起作用,我没有任何显示。以上是关于Jquery:如何检测内容更改? (寻找 keyup() 的替代品)的主要内容,如果未能解决你的问题,请参考以下文章
jQuery 事件:检测对 div 的 html/文本的更改