2012-07-27 31 views
3

例如,我們有值=「沃利」 HTML輸入:如何在用戶更改後獲得實際輸入值(使用jQuery)?

<input type="text" value="wally" /> 

如何得到這個老「沃利」值用戶後(使用jQuery)改變呢?我試圖用.attr(),.prop(),.val()得到它,但是它們都返回用戶輸入的新值。您可以測試code on jsfiddle。嘗試更改輸入值並單擊「獲取」藍色按鈕。

P.S.包含在jsfiddle中的jQuery 1.7.2。

回答

5

底層DOM元素的使用defaultValue

var input = $(this).closest('form').find('input'); 
console.log(input[0].defaultValue); 

Updated fiddle

和當然,如果你使用jQuery 1.6或更高版本,可以使用prop('defaultValue')爲(及更早版本,attr('defaultValue')可能有效):

var input = $(this).closest('form').find('input'); 
console.log(input.prop('defaultValue')); 

Updated fiddle

+0

你可能對它有更多的經驗,是否有'.getAttribute('value')'的跨瀏覽器問題? – 2012-07-27 09:21:51

+0

@FelixKling:就我可以扔掉史蒂夫鮑爾默而言,我不會相信IE,特別是IE7。而我知道'defaultValue'已經工作了15個多年。我*認爲*我嘗試了'getAttribute',發現它不可靠,但我必須做一個實驗才能確定。 – 2012-07-27 09:22:35

+0

這不是很遠......;)謝謝! – 2012-07-27 09:23:38

-1

你可以使用像另一個屬性:

<input type="text" value="wally" oldVal="wally" /> 

然後用

input.attr('oldVal'); 
+0

oldVal不是有效的屬性。 data-oldval會是。 – 2012-07-27 09:19:14

+0

這沒有必要。 – 2012-07-27 09:21:17

0

使用element.defaultValue;元素當然是輸入字段。 如果首先使用JavaScript填充元素,只需添加一個新的數據屬性即可。

例如數據默認值=「wallie」

0

你可以存儲在輸入元素的數據容器的默認值,那麼當用戶點擊Get按鈕(除非你總是希望更新的數據值有權訪問默認值,而不僅僅是最後一個值)。

小提琴: http://jsfiddle.net/DA67p/4/

+0

嘗試改變輸入值幾次,每次「oldValue」將被改變。最好在頁面加載後記住「oldValue」一次。 – webvitaly 2012-07-27 09:41:21

+0

我更新了代碼:http://jsfiddle.net/webvitaly/DA67p/7/ – webvitaly 2012-07-27 09:43:16

4

要記住的值修改前..

$('input').focusin(function(){ 
    $(this).data('oldValue', $(this).val()); 
}); 

而且使用它找回來..

$('input').change(function(){ 
    var old = $(this).data('oldValue'); //old value 
    var new = $(this).val(); //new value 
}) 

見工作example here

+0

嘗試改變輸入值幾次,每次「oldValue」將被改變。最好在頁面加載後記住「oldValue」一次。 – webvitaly 2012-07-27 09:39:37

-1

這個問題有足夠的答案。 但是,如果您需要代碼背後或服務器端的舊值,那麼還有其他解決方法會很有幫助。

爲您的頁面添加一個具有相同值的隱藏字段。所以如果你需要舊值使用隱藏字段的值。這樣做,您將在客戶端和服務器端獲得舊值。

+0

downvoter請告訴downvoting的原因嗎? – Narendra 2012-07-27 11:19:00

相關問題