Firefox的错误 - 动态输入元件

问题描述:

缺陷: 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

尝试使用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

我会说在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

原因似乎是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