Firefox bug - 动态输入元素

时间:2010-08-20 13:33:08

标签: javascript html firefox

错误: http://www.chubbyfish.co.uk/bug.html

我正在动态创建第三个输入字段,然后为其添加一个值(“输入3值”)。

多次刷新页面,你会看到input4和input5被填充相同的值。为什么呢?

任何想法?!如果你能解决它,我会给你买一艘豪华游艇和一所新房子!

3 个答案:

答案 0 :(得分:1)

尝试使用document.getElementById而不是旧的,已弃用(不推荐)document.forms对象。因此,例如,替换:

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

使用:

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

完成此操作后,为每个input代码指定name属性。为方便起见,请为name提供与id相同的name。表单元素与<!DOCTYPE html> s一起使用。

此外,这是不相关的,但最好有一个基于标准的doctype,以避免在'quirks模式'(用于与旧网站兼容的旧引擎模式)中呈现。您可以通过在HTML页面的最开头粘贴此代码来执行此操作:

input

添加,因为您使用的是HTML而不是XHTML,所以不应对>标记使用自我关闭表示法(您应该删除之前的斜杠) {{1}})。

答案 1 :(得分:1)

我想说Firefox的自动填充中似乎存在某种错误。

尝试提供输入name s(无论如何都是输入的常用方式)。也许这会清除它。

答案 2 :(得分:1)

原因似乎是firefoxes“记住”页面刷新时输入的表单值。使用firebug我在JS的第一行放置了一个断点,当点击刷新时,它会渲染四个文本框,文本框与页面上已有的前四个框相同[1]。因此,第三个显示的文本框在文本框中具有“输入3值”。然后,当插入新框时,第三个框变为第四个。我想知道这是否是因为firefox根据我注意到你缺少的name属性绑定了值。添加它可能会修复它。

我建议去找Firefox的bug跟踪器,看看是否已经报告过。如果没有,则用repro页面报告。如果在输入有名字的情况下工作正常虽然它可能被认为不是一个错误 - 我真的不能说。

[1]有一点需要注意的是,如果我只是加载页面并点击刷新,那么“刷新后覆盖的文本”似乎不会被复制下来。但是,如果我修改该字段,则可以清楚地看到它也在向下移动。为什么这是我不确定。