firefox下reset控件无法清除hidden控件value

  今天搞一个表单,发现在w3c浏览器和ie浏览器下的一个问题,w3c浏览器无法使用reset控件或者表单的reset事件来清空通过js设置hidden控件后的值,其他可以显示的控件值是可以还原到原来的状态,但是hidden的话无法还原,郁闷了,(#‵′)靠。

  在IE浏览器下可以清空js设置的hidden控件的值,为什么w3c浏览器无法清除呢?⊙﹏⊙b汗....难道我理解错reset的功能了,但是IE下可以清空啊。

  对于我的一直来的理解是,说清空不完全正确,确切的的的意思是能从最新的值还原到初始化的value。



+展开
-HTML
<form method="get">
<input type="reset" value="重置" /><input type="text" /><input type="hidden" name="id" value="2" /><input type="button" value="输出hidden控件的值" onclick="alert(document.forms[0].id.value)"/>
</form>
<script type="text/javascript">
setTimeout(function(){document.forms[0].id.value=1;},2000);//2秒动态设置hidden的值
</script> 


原来hidden的值是2,2秒后设置为1,在ie下点击重置可以将hidden的值还原为2,但是在w3c浏览器,如ff下竟然还是1,而不是原来的值2,垃圾了。。。。

后面再网上找到了一个说明,如下
reset的功能是将输入项的值赋值为form中的值,也就是说如果form中有值的话,那么即使点击reset按钮也不会将输入项清空,而是会将其赋值为form中的值。

根据上面的说明,我理解后如下:只有能键盘输入,鼠标点击修改值的控件【即除hidden意外的输入控件】才能使reset还原为初始化的值,哪怕隐藏了的输入控件。

如下
+展开
-HTML
<form method="get">
<input type="reset" value="重置" /><input type="text" name="tt" value="old" style="display:none"/><input type="hidden" name="id" value="2" /><input type="button" value="输出hidden控件的值" onclick="alert(document.forms[0].id.value+'\n'+document.forms[0].tt.value)"/>
</form>
<script type="text/javascript">
setTimeout(function(){document.forms[0].id.value=1;document.forms[0].tt.value='NaN';},2000);
</script> 



╮(╯▽╰)╭,郁闷了,使用w3c浏览器看来还得手动清空下hidden的值才行。但是如何还原为初始化的值,这个就不晓得,只能多加一个自定义的属性来存储初始化的值,当reset后从自定义属性中获取初始化的值设置value属性了。。。。还是真麻烦,w3c浏览器。

加支付宝好友偷能量挖...


原创文章,转载请注明出处:firefox下reset控件无法清除hidden控件value

评论(0)Web开发网
阅读(1534)喜欢(0)JavaScript/Ajax开发技巧