【问题标题】:Firefox bug - dynamic input elementFirefox 错误 - 动态输入元素
【发布时间】:2010-08-20 22:17:59
【问题描述】:

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

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

刷新页面几次,您会看到 input4 和 input5 填充了相同的值。为什么?

有什么想法吗?!如果你能修好,我会给你买一艘豪华游艇和一栋新房子!

【问题讨论】:

  • 无法复制。你用的是什么版本?
  • 我可以在 Ubuntu 10.10 上的 Firefox 3.5.8 中重现这一点。您使用的是什么浏览器和操作系统?
  • 抱歉,我的错误,我正在重新加载(急... facepalm
  • 感谢您的帮助。我在winXP,Firefox 3.6.8。也发生在 Mac 上的 Firefox 上
  • 世界上有很多用户不使用 Ubuntu。因此,为什么需要跨浏览器测试以及为什么它需要在 Firefox 中工作。所以,恐怕这不是一个好的答案!

标签: javascript html firefox


【解决方案1】:

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

尝试输入names(无论如何,这是输入的常用方式)。也许这会清除它。

【讨论】:

  • 当。我确定当我第一次查看该页面时这个答案不在这里,但考虑到那只是几分钟前,我一定是失明的。我同意你的观点,并且有更多观察到的数据来支持这一事实。 +1 表示我在 25 分钟前说过的话。 :)
  • 是的。做得好。你赢得了一艘豪华游艇。添加名称属性可解决此问题。谢谢克里斯和罗托拉!! :-)
  • @chubbyfish: 把他们贴在帖子里给我好吗? :)
  • @@chubbyfish:别忘了将其中一个答案标记为已接受的答案。可能是 RoToRa 的,因为他首先给出了答案,但如果你特别喜欢我的额外细节,请随时标记我的。你用答案下面的小勾来做这个。
【解决方案2】:

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

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

与:

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

完成后,为每个input 标签赋予name 属性。为方便起见,请将nameid 相同。表单元素与names 一起使用。

另外,这是不相关的,但最好有一个基于标准的文档类型以避免以“怪癖模式”(一种用于与旧网站兼容的旧引擎模式)呈现。您可以通过将这段代码粘贴在 HTML 页面的最开头来做到这一点:

<!DOCTYPE html>

补充: 因为您使用的是 HTML 而不是 XHTML,所以您不应该对 input 标签使用自关闭符号(您应该删除 @987654332 之前的斜杠@)。

【讨论】:

  • document.forms 没有任何问题(或已弃用)。然而chubbyfish在这里用错了。
  • 谢谢。我已经更新了页面,现在验证为 HTML5。错误依然存在!
  • 这可能无济于事,但即使没有,也是一种很好的做法。请删除inputmeta 标签末尾的尾部自关闭斜杠。这种自闭合语法不应该在 HTML 中完成。
  • 更好更正确的是document.forms[0].elements["elementName"](elementName当然是name而不是id
  • 那为什么不直接使用document.getElementById而不是被困在过去呢?
【解决方案3】:

原因似乎是 Firefox 在页面刷新时“记住”输入的表单值。使用 firebug,我在 JS 的第一行放置了一个断点,当点击刷新时,它会呈现四个文本框,其中的文本与页面上已经存在的前四个框 [1] 中的文本相同。所以第三个显示的文本框在文本框中有“输入 3 值”。然后当插入新盒子时,第三个盒子变成第四个。我想知道这是否是因为 firefox 根据我注意到您丢失的 name 属性绑定了值。添加它可能会解决它。

我建议你去寻找 Firefox 的错误跟踪器,看看是否已经报告了这个问题。如果没有,则使用复制页面进行报告。如果输入有名称时它可以正常工作,尽管它可能被认为不是错误 - 我真的不能说。

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

【讨论】:

  • 谢谢。正如我上面所说,名称属性修复它。好东西。非常感谢!
  • @RoToRa: 哇……相互的爱和尊重。 :)
猜你喜欢
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 2020-07-21
相关资源
最近更新 更多