就是这样。如何获得textarea的旧值以便将其与新值进行比较?触发事件(例如,键盘事件)后,当前值将成为旧值。
我已经看到了一些解决方案,例如,使用cookie来记录旧值和新值,但是,由于我想要稍后执行的操作类型,这种解决方案在我的情况下不起作用。
希望有一个建议比这更好。
提前致谢。
更新:
在听完@drachenstern,@ Matthew,@ Peter的一些建议后,我最终得到了类似的东西
var startTimer = null;
var oldValue;
$("#textarea").keydown($.debounce( 1000, true, function(){
oldValue = $("#textarea").val();
}
));
$("#textarea").keyup(function(){
if(startTimer) clearTimeout(startTimer);
startTimer = setTimeout(function(){
var newValue = $("#textarea").val();
d = // here a clever comparison
oldValue = newValue;
},2000);
})
顺便说一下,$.debounce
是jQuery油门/去抖插件的函数。
这正是我想要的,但是,我想在setTimeout函数和keyup函数之外获取变量d
,以便在别处使用它。但是,当返回值时,clearTimeout似乎很棘手。有没有办法获得d
的价值?
答案 0 :(得分:3)
var oldValue = document.getElementById("textareaid").value;
document.getElementById("textareaid").onchange = function(){
var newValue = this.value;
//Compare oldValue and newValue
oldValue = newValue;
}