【问题标题】:HTML form default values override actual values at post time in Internet Explorer 9在 Internet Explorer 9 中,HTML 表单默认值会在发布时覆盖实际值
【发布时间】:2011-04-13 01:24:24
【问题描述】:

我只是在我的网站上测试全新的 Internet Explorer 9 Beta。我看到某些表单值的奇怪行为,我不确定这是我的错误还是 IE9 中的错误。你怎么看?

我有一个表单,它声明了几个像这样的隐藏输入字段

<input type="hidden" name="NewStatus" />
<input type="hidden" name="lastSaveStatus" value="" />

当页面被提交时,值是这样保存的(在 JavaScript 中):

newStatus.setAttribute("value", myNewStatus);
var formLastStatus = document.getElementsByName("lastSaveStatus")[0];
formLastStatus.setAttribute("value", lastSaveStatus);
alert(lastSaveStatus);
alert(formLastStatus.getAttribute("value"));
var form = document.getElementById("myForm"); 
form.submit();

该代码已在所有浏览器中运行多年。 警报已经表明我现在对 lastSaveStatus 字段有问题。 在 IE9 中,NewStatus 被正确传输到服务器(意味着我可以使用 Request.Form["NewStatus"] 访问 ASP.NET 中的值)。 但是“lastSaveStatus”的值始终是“”。

如您所见,我在隐藏字段的定义中使用了 value=""。如果我删除此默认值,则新值将正确传输到服务器。如果我使用默认值,则始终传输默认值。

知道为什么会这样吗?

【问题讨论】:

    标签: javascript html internet-explorer-9 forms http-post


    【解决方案1】:

    您确定这在以前版本的 IE 中有效吗?我一直在 IE/Win 中遇到该语法的问题,但是以下应该可以工作:

    formLastStatus.value = lastSaveStatus;
    

    以上内容也应该适用于所有浏览器。

    【讨论】:

    • 是的,我非常确定它适用于 IE6、7、8。它也适用于 9,它的 NewStatus 值也使用 setAttribute。顺便说一下,alert(formLastStatus.getAttribute("value"));确实会提醒正确的新值。但是这个值不是传的而是默认值。
    猜你喜欢
    • 2015-05-23
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 2013-10-23
    • 2020-07-28
    相关资源
    最近更新 更多