0

我有一个文本框,我正在使用 live() 的 keyup 事件——编写新代码的人应该使用 on()——但问题是人们可以复制和粘贴值、拖动值或使用自动完成来更改值。

为了解决这个问题,我发现我可以使用以下内容:

$(".textbox").live("keyup change input", function(){

这可行,但问题显然是在某些情况下和某些浏览器中多次调用该函数。我似乎想不出办法来避免这个问题。有没有人有任何快速的想法?如果代码被多次调用,因为它只是更新页面上的一些值,这并不是世界末日,但是学习如何解决这个问题会很好!谢谢!

编辑:我之前忘了提,但我使用的是 jQuery 1.4.4 并且 on() 不可用。

4

2 回答 2

0

建议与更正

该功能$.live()已弃用。所以更改以下代码:

$(".textbox").live("keyup change input", function(){

至:

$("body").unbind("keyup").unbind("change").unbind("input").on("keyup change input", ".textbox", function(){

这解决了事件的多个附件。

于 2013-01-31T08:55:08.597 回答
0

如果发生多个事件但值没有改变,那么我们可以忽略这些事件。因此,您可以保持旧值并与新值进行比较以决定是否应该做某事:

$(".textbox").live("keyup change input", function(e){
    if($(this).attr("old-value") !== $(this).val()){
        // do something

        // update old-value
        $(this).attr("old-value", $(this).val());
    }
});

在这里演示:http: //jsfiddle.net/NYmYJ/3/

于 2013-01-31T08:58:27.023 回答