2011-03-07 48 views
1

就是這樣。如何獲得textarea的舊值以便將其與新值進行比較?當前值在觸發事件後變成舊值(例如,鍵入事件)。如何獲得textarea的舊值

我已經看到了一些解決方案,例如,使用cookie記錄舊值和新值,但是,由於稍後要執行的操作類型,這種解決方案在我的情況下不起作用。

希望有一個比這更好的建議。

在此先感謝。

UPDATE

以下後從@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

做一個全局變量(是的,我知道全局變量是邪惡的)並將d賦值給該變量。 – 2011-03-08 04:43:38

+0

@Peter:只有選項可用?感謝您的關注。 – 2011-03-08 05:11:11

+0

我確定這不是唯一的選擇,但這是我現在能想到的唯一選擇。 – 2011-03-08 05:30:55

回答

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

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

使oldvalue數組和設置鍵與某種形式的標記,說arrayOldValue [version_1] = initialValue,然後繼續增加version_1到version_n,你甚至可以支持版本 – Kumar 2011-03-07 03:39:22

+0

@Peter:尼斯,但我需要使用//比較函數外部的oldValue和newValue。任何方式來實現這一目標? – 2011-03-07 03:45:10

+0

@Kumar:對我來說,試圖保持所有的價值將是太多了。還是)感謝你的建議。 – 2011-03-07 03:46:10