隐藏输入元素的Javascript和defaultValue

隐藏输入元素的Javascript和defaultValue,javascript,dom,Javascript,Dom,假设您有输入元素: <input id="aaa" type="text" value="unchanged" /> 结果将是“不变/更改”。不幸的是,当您的输入元素隐藏时: <input id="aaa" type="hidden" value="unchanged" /> …相同的js脚本似乎不再有效。结果是“改变/改变”。 这是正确的方式吗?如果是这样,为什么只有隐藏的表单元素的行为不同?默认值属性的维护方式显然是“文本”、“文件”和“密码”字段的维护方式

假设您有输入元素:

<input id="aaa" type="text" value="unchanged" />
结果将是“不变/更改”。不幸的是,当您的输入元素
隐藏时

<input id="aaa" type="hidden" value="unchanged" />

…相同的js脚本似乎不再有效。结果是“改变/改变”。 这是正确的方式吗?如果是这样,为什么只有隐藏的表单元素的行为不同?

默认值属性的维护方式显然是“文本”、“文件”和“密码”字段的维护方式

是DOM规范的相关部分


我怀疑这是因为用户活动本身无法更改隐藏元素的值。如果要保留初始值,请在“load”或“ready”下运行某个程序以将值隐藏在某个位置。

对于隐藏的输入元素,默认值实际上没有实现。之所以在ast
.value
上得到相同的结果,是因为您使用的浏览器只是默认的


有关Firefox的讨论,请参阅。

您使用的浏览器是什么?根据我的测试,@Pointy answer正确地总结了情况。我成功地将其更改为
type=“input”style=“display:none”
,这对我很有效。我只是好奇规格和原因。谢谢你的回答!不仅如此,似乎没有新类型,例如type='number',type='time',等等,保留
defaultValue
!对我来说,这意味着保留我自己的属性来执行我使用
defaultValue
执行的操作。哦,好吧
<input id="aaa" type="hidden" value="unchanged" />