2010-05-06 53 views
1

我有一堆輸入文本框,其屬性ORIGINAL設置爲其初始值,以便當用戶更改文本框值時,jQuery可以高亮顯示項目已經改變了(通過比較文本框的當前值和原始屬性的值)設置具有其屬性之一的文本框的值(jQuery)

我現在想要做的是爲用戶提供一個按鈕,他們可以單擊以將所有文本框恢復爲基於每個文本框的ORIGINAL屬性的值。

$('input[type=text]').val($(this).attr('original')); 

以上不工作,我不明白爲什麼。

+0

吹毛求疵:添加一個「原始」屬性嚴格(如「得到棒out of your a ..「)會使html文檔失效。在hml5中,您可以爲此目的添加data- *屬性,例如''。 – VolkerK 2010-05-06 13:36:32

回答

3

使用each

$('input:text').each(function() { 
    $(this).val($(this).attr('original')); // or this.value = $(this).attr('original'); 
}); 

不能使用一個班輪,爲$('input[type=text]').val()將匹配返回集合中的第一個元素的唯一值。 $(this)並不意味着你認爲它在你的例子:

$('input[type=text]').val($(this).attr('original')); 

它實際上指的是目前的範圍。當您使用each迭代集合時,jQuery將調用它的回調並在迭代中將當前元素指定爲當前範圍($(this)this)。

作爲一個側面說明,input:text是一個更漂亮,更簡潔的方式說input[type=text]

+0

我會使用'this.value = $(this).attr(「original」)|| 「」在每個循環中。無需通過其'.val()'循環發送jQuery來設置值。 – 2010-05-06 14:05:25

+0

@David - 我已經把它作爲代碼註釋拋出。儘管我不會調用'$(this).val()',但我會承認'this.value'更容易打印,並且在眼睛上更容易一些。 – karim79 2010-05-06 14:08:35

0

事情是這樣的:

$('input[type=text]')each(function(){$(this).val($(this).attr('original'));} 
0

您可以撥打任一輸入.defaultValue以獲得其原始值

0

val接受功能:

$('input:text').val(function() { 
    return $(this).attr('original'); 
});