0

我有以下表单文本输入,如下所示:

<input name="name" type="text" value="test" id="name">

如果我将 name 属性更改为其他有效的值,它不会显示该值。它是硬编码的,没有 javascripts 与之交互。

更新:它在 Internet Explorer 和 Google Chrome 中运行良好,在 Firefox 中无法运行。

更新 2:我能够复制问题。

例如,在我的本地主机中,我访问/blog/login,输入名称显示值测试,这是硬编码的,如果我删除值并重新加载,而不提交任何内容,那么只要我重新加载,输入名称就会为空。如果我再次导航到 /blog/login,硬编码的值将再次显示。

这种行为在 IE 和 Chrome 中不会发生。

如果这是一个愚蠢的问题,我深表歉意,但我想这真的很奇怪。

4

1 回答 1

0

浏览器将表单控件的名称和 ID 作为属性添加到 FORM。这导致表单的属性被替换。

浏览器还可以将其他元素的名称和 ID 作为属性添加到文档中,有时添加到全局对象(或范围内全局对象之上的对象)。这种非标准行为可能会导致替换其他对象的属性。详细讨论了它引起的问题。

当窗体控件的名称与 FORM 对象的属性名称冲突时会出现问题。

例如:

简单的不安全名称示例

<form action="">
  <input type="text" name="name">
  <input type="submit" name="submit">
</form>

结果

元素name="name"替换 FORM 的 name 属性的值。FORM 的提交方法和带有name="submit'. 哪个会赢?

在大多数情况下,表单控件获胜并且 FORM 的属性被替换为具有表单控件的值,或者,如果多个表单控件具有该名称,则 FORM 的属性被替换为包含这些表单控件的 NodeList。

但是,在某些情况下,不会将 FORM 的属性替换为具有相同名称的表单控件的值。此页面中的示例显示结果取决于浏览器、属性以及控件的添加方式。

http://jibbering.com/faq/names/

于 2013-06-14T05:52:51.510 回答