2010-08-19 74 views
3

是否可以更改已隐藏的<input type="text">的值,其格式为display:none?我有一些JS在输入为<input type="hidden">时似乎可以工作,但在隐藏display:none时却没有。而AFAIK,你也不能用JS改变输入的类型。更改显示值:无输入?

基本上,我想用<select>替换<input>,所以我试图隐藏它并附加<select>元素。


看看http://jsfiddle.net/5ZHbn/

检查与萤火虫的<select>元素。看看它旁边的隐藏输入。更改选择的值。隐藏的输入不会改变。萤火虫对我说谎吗?

如果您取消注释其他代码行,那么它的工作原理。

其实......我很确定它现在是Firebug中的一个bug。大多数其他事情正确更新,但当我检查它时,萤火虫并不显示更新的值。

+0

你如何追加到选择?如果您使用的是.innerHTML,它将在所有版本的IE中失败。 – scunliffe 2010-08-19 23:33:31

+0

@scunliffe - 他追加选择本身,而不是*选择。 – Matchu 2010-08-19 23:33:57

+0

@Matchu啊,真的......我误读了...... – scunliffe 2010-08-19 23:34:49

回答

5

我认为这是一个Firebug的bug。

这是因为,如果我查询(通过控制台)输入文本字段的值,它实际上是在更新,它仅仅是萤火虫并不反映在HTML标签更新值

事实上,使用DOM标签新的价值是存在的,即使没有更新的实际节点在HTML标签值。

如果您使用“通常可见”元素(如输入类型=“text”)或类似内容,似乎会发生这种情况。如果你使用“通常隐藏的”元素(比如input type =“hidden”),Firebug会正常更新它的值。

我认为这是在Firebug的错误,似乎没有更新元素的值,如果它通常是可见的,但现在隐藏与CSS:我在说具体这个,因为类型的输入=“隐藏” 显示:尽管如此,还没有更新,因此它不仅仅是通过显示隐藏的元素问题:无。

希望这会有所帮助,我即将向Firebug家伙发布此错误。

更新:我在Win Srv 2K3的Firefox 8上使用Firebug 1.8.4。

+0

很好的答案感谢它帮助我 – Jalpesh 2013-03-02 04:35:38

4

无论任何CSS样式,更改字段的值都应按预期工作。这个问题可能在其他地方。

+0

同意了。 JavaScript可以随时完全控制设置值。 – scunliffe 2010-08-19 23:32:43

+0

@scunliffe:这不完全正确。我确信你不能改变'file'输入的值。 – mpen 2010-08-20 03:18:10

+0

@Mark - 我认为@scunliffe正在讨论Javascript可以改变的领域。 – Matchu 2010-08-20 04:44:53

3

你可以改变它像往常一样:你有

document.getElementById('myinput').value = 'Hello'; 
0

一种选择是把输入框一个div内,然后使用JavaScript来改变div的内容。例如:

<html> 
<head> 
<title>Input Text To Dropdown Box</title> 
<script type="text/javascript"> 
function swap() { 
document.getElementById("contentswap").innerHTML = "<select><option value='cats'>Cats</option><option value='dogs'>Dogs</option></select>"; 
} 
</script> 
<style> 
#contentswap { 
display:inline; 
} 
</style> 
</head> 
<body 
<div id="contentswap"> 
<input type="text" name="original"> 
</div> 
<br /> 
<input type="button" value="Input To Select" onClick="swap()"> 
</body> 
</html> 
1

我在定制magento自定义选项字段时遇到此问题,我从某些自定义选择输入中做出了一些规则,并且需要将最终值保存到隐藏的自定义选项文本字段中。出于某种原因,如果该字段为'display:none'(可能是因为某个magento的js?),那么它不起作用,但当我更改为“visibility:hidden;”时它就起作用了。

我知道我的答案是特定的,我试着发表评论,但没有足够的声望。希望它能帮助别人。