我有一个文本框,我正在使用live()的keyup事件 - 编写新代码的人应该使用on() - ,但问题是人们可以复制和粘贴值,拖动值in或使用自动填充来更改值。
要解决此问题,我发现可以使用以下内容:
$(".textbox").live("keyup change input", function(){
这样可行,但问题显然是在某些情况下和某些浏览器中多次调用该函数。我似乎无法想到避免这个问题的方法。有没有人有任何快速的想法?如果代码被多次调用,它不是世界末日,因为它只是更新页面上的某些值,但是学习如何解决这个问题会很好!谢谢!
编辑:我之前忘记提及它但是我使用的是jQuery 1.4.4并且on()不可用。
答案 0 :(得分:0)
建议和更正
不推荐使用函数$.live()
。因此,请更改以下代码:
$(".textbox").live("keyup change input", function(){
要:
$("body").unbind("keyup").unbind("change").unbind("input").on("keyup change input", ".textbox", function(){
这可以解决多个事件附件。
答案 1 :(得分: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());
}
});