2010-08-20 23 views
0

缺陷: http://www.chubbyfish.co.uk/bug.htmlFirefox的錯誤 - 動態輸入元件

我動態創建的第三輸入字段,然後將值相加,以它(「輸入3值」的)。

多次刷新頁面,您會看到input4和input5被填充相同的值。爲什麼?

有什麼想法?如果你能解決它,我會給你買一艘豪華遊艇和一座新房子!

+0

無法重現。你使用什麼版本? – 2010-08-20 13:37:55

+0

我可以在Ubuntu 10.10的Firefox 3.5.8中重現這一點。你使用什麼瀏覽器和操作系統? – 2010-08-20 13:39:46

+0

道歉,我的錯誤,我正在重新加載(urg ... * facepalm *) – 2010-08-20 13:44:47

回答

1

嘗試使用document.getElementById而不是舊的,不推薦的(不推薦)document.forms對象。因此,例如,更換:

document.forms[0].input3.value = 'input 3 value'; 

有:

document.getElementById('input3').value = 'input 3 value'; 

一旦做到這一點,給每個input標籤name屬性。爲方便起見,請將它與id相同name。表單元素可與name一起使用。

此外,這是不相關的,但具有基於標準的文檔類型以避免在'怪癖模式'(用於與舊網站兼容的舊引擎模式)中呈現是個好主意。您可以通過在HTML頁面的最開始堅持這個代碼做到這一點:

<!DOCTYPE html> 

增加:,因爲你是使用HTML和XHTML不,你不應該使用自閉符號爲input標籤(您應該刪除正好在>之前的斜槓)。

+1

關於'document.forms'沒什麼不對(或不推薦)。然而chubbyfish在這裏使用它是錯誤的。 – RoToRa 2010-08-20 13:44:52

+0

謝謝。我已經更新了該頁面,現在它被驗證爲HTML5。錯誤依然存在! – chubbyfish 2010-08-20 13:47:03

+0

這可能不會做任何事情,但即使它沒有,這是一個很好的做法。請刪除'input'和'meta'標籤末尾的尾隨自閉合斜線。這種自閉的語法不應該在HTML中完成。 – 2010-08-20 13:48:31

1

我會說在Firefox的自動填充中似乎有某種錯誤。

嘗試給輸入name s(這是通常的輸入方式)。也許這將清除它。

+0

Dang。我確定這個答案當我第一次看這個頁面的時候不在這裏,但是鑑於那只是在幾分鐘前,我一定是失明的,我同意你的觀點並且有更多觀察到的數據來支持這個事實。我說,但提前25分鐘。:) – Chris 2010-08-20 14:19:17

+0

是的。做得好。你贏了一艘豪華遊艇。添加名稱屬性可以解決問題。感謝Chris和RoToRa! :-) – chubbyfish 2010-08-20 14:28:48

+0

@chubbyfish:jsut在帖子中貼EM,會給你嗎? :) – Chris 2010-08-20 14:32:50

1

原因似乎是firefoxes在頁面刷新時「記住」輸入的表單值。使用firebug我在JS的第一行放置了一個斷點,當點擊刷新時,它會渲染四個文本框,其中的文本與已經在頁面上的前四個框相同[1]。所以第三個顯示的文本框在文本框中有「輸入3值」。然後,當插入新盒子時,第三盒子變成第四盒子。我想知道這是否是因爲Firefox基於我注意到你缺少的名稱屬性的值。它可能會添加這個將解決它。

我建議去查找Firefox的錯誤跟蹤器,看看是否已經報告過。如果沒有,則用報告頁面報告。如果在輸入名稱的時候它可以正常工作,但它可能被認爲不是一個錯誤 - 我不能說真的。

[1]有趣的是,如果我只是加載頁面並點擊刷新,「刷新時覆蓋」文本似乎不會被複制。但是,如果我修改了該字段,則顯然也會在頁面中移動。爲什麼這是我不確定。

+0

+1爲我的答案更完整的版本。 – RoToRa 2010-08-20 14:28:07

+0

謝謝。正如我上面所說,名稱屬性修復它。好一個。非常感謝! – chubbyfish 2010-08-20 14:29:19

+0

@RoToRa:Aww ...相互的愛和尊重。 :) – Chris 2010-08-20 14:33:18