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/文本的更改

Vue路由器更改页面时如何加载Jquery插件/脚本?

检测 <td> 的内部 html 何时随 javascript 或 jquery 更改

jQuery - 检测隐藏输入字段的值更改

如何使用 jquery 更改 CurrentCulture

如何检测文本框的内容已更改