这是IE9 Beta中的错误吗?

时间:2010-09-26 06:56:57

标签: html internet-explorer-9

我的网络表单中有这样的内容:

<input type="hidden" name="myField" value="defaultValue" />

稍后,在某些Javascript中,我在将页面提交到服务器之前覆盖了默认值。

var formField = document.getElementsByName("myField")[0];
formField.setAttribute("value", "myNewValue");
var form = document.getElementById("myForm"); 
form.submit();

所有浏览器(我在IE5-IE8,Firefox,Opera,Chrome,Safari等中测试此代码多年)都在向服务器发送“myNewValue”。除IE9外:它发送“defaultValue”。这里发生了什么?我错过了什么吗?

如果我从字段中删除“value”属性,它也适用于IE9。如果我切换到IE8渲染模式,它也适用于IE9。

这是一个错误还是IE9比其他浏览器更符合标准?

2 个答案:

答案 0 :(得分:2)

value属性定义为设置initial value

加载表单后,该字段会将其实际值设置为初始值。

据我所知,如果在表单加载后初始值发生变化,则没有任何内容表示当前值应该更改,因此我怀疑这是一个错误修复而不是新错误。

使用value属性而不是setAttribute方法。

答案 1 :(得分:0)

对于HTML4,David Dorward似乎是正确的,但这似乎是向后兼容性破坏行为,因此我希望HTML5能够描述浏览器实际执行的操作。它似乎。它说:(我的重点)

  

值内容属性给出了   输入元素的默认值。   当值内容属性为   添加,设置或删除,如果   控件的脏值标志为false,   用户代理必须设置值   元素值的值   内容属性,如果有,或者   否则为空字符串,然后   运行当前值清理   算法,如果定义了一个。

请参阅http://dev.w3.org/html5/spec/the-input-element.html#attr-input-value

您的方案没有描述在setAttribute调用之前设置脏值标志的任何内容,所以我认为setAttribute调用应该设置value属性和 浏览器应该发送myNewValue而不是defaultValue。

所以,是的,我认为这是一个IE9 Beta bug。