2010-08-19 72 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;」時它就起作用了。

我知道我的答案是特定的,我試着發表評論,但沒有足夠的聲望。希望它能幫助別人。