我有一堆輸入文本框,其屬性ORIGINAL設置爲其初始值,以便當用戶更改文本框值時,jQuery可以高亮顯示項目已經改變了(通過比較文本框的當前值和原始屬性的值)設置具有其屬性之一的文本框的值(jQuery)
我現在想要做的是爲用戶提供一個按鈕,他們可以單擊以將所有文本框恢復爲基於每個文本框的ORIGINAL屬性的值。
例
$('input[type=text]').val($(this).attr('original'));
以上不工作,我不明白爲什麼。
我有一堆輸入文本框,其屬性ORIGINAL設置爲其初始值,以便當用戶更改文本框值時,jQuery可以高亮顯示項目已經改變了(通過比較文本框的當前值和原始屬性的值)設置具有其屬性之一的文本框的值(jQuery)
我現在想要做的是爲用戶提供一個按鈕,他們可以單擊以將所有文本框恢復爲基於每個文本框的ORIGINAL屬性的值。
例
$('input[type=text]').val($(this).attr('original'));
以上不工作,我不明白爲什麼。
使用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]
。
我會使用'this.value = $(this).attr(「original」)|| 「」在每個循環中。無需通過其'.val()'循環發送jQuery來設置值。 – 2010-05-06 14:05:25
@David - 我已經把它作爲代碼註釋拋出。儘管我不會調用'$(this).val()',但我會承認'this.value'更容易打印,並且在眼睛上更容易一些。 – karim79 2010-05-06 14:08:35
事情是這樣的:
$('input[type=text]')each(function(){$(this).val($(this).attr('original'));}
您可以撥打任一輸入.defaultValue以獲得其原始值
val
接受功能:
$('input:text').val(function() {
return $(this).attr('original');
});
吹毛求疵:添加一個「原始」屬性嚴格(如「得到棒out of your a ..「)會使html文檔失效。在hml5中,您可以爲此目的添加data- *屬性,例如''。 – VolkerK 2010-05-06 13:36:32