如何获得textarea的旧值

时间:2011-03-07 03:20:50

标签: javascript javascript-events textarea

就是这样。如何获得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的价值?

1 个答案:

答案 0 :(得分:3)

var oldValue = document.getElementById("textareaid").value;

document.getElementById("textareaid").onchange = function(){
  var newValue = this.value;
  //Compare oldValue and newValue
  oldValue = newValue;
}