2010-10-27 32 views
1

路過這裏是我的JS:隱藏值,而div的顯示風格沒有使用PHP

<script type="text/javascript"> 

function display(action, id) { if 
(action == 'show') { 
document.getElementById("explanation"+id).style.display 
= "block"; document.getElementById("link"+id).href= 
"javascript:display('hide', "+id+")"; 
document.getElementById("link"+id).innerHTML 
= "Close"; } 

if (action == 'hide') { 
document.getElementById("explanation"+id).style.display 
= "none"; document.getElementById("link"+id).href= 
"javascript:display('show', "+id+")"; 
document.getElementById("link"+id).innerHTML 
= "Explain"; } } 

</script> 

和HTML:

<form name="test" id="test" 
method="post" 
enctype="multipart/form-data"> 
    {assign var="clone" value="0"} 
    {section name=another loop=$dealImageTest} 
    {assign var="cloneTemp" value=$clone++} 
    <table><tr> 
    <td width="121" align="left"> 
    <div id="explanation{$cloneTemp}" > 

    <img src="{$dealImageTest[another]}" 
width="62" height="40" /><a 
id="link{$cloneTemp}" 
href="javascript:display('hide', 
{$cloneTemp})">Remove</a> 

    <input type="hidden" name="dealImage_{$clone++}" id="{$dealImageTest[another]}" 
value="{$dealImageTest[another]}"> 

     </div> 

     </td> </tr></table> 

    {/section} 

</form> 

當我點擊刪除按鈕圖像被隱藏。但是當我提交表單時,我正在獲取隱藏類型的值。

但根據div如果風格隱藏它不會傳遞任何價值。

如何解決這個問題。任何想法都會有所幫助,非常有幫助。在此先感謝

+4

'但根據div如果風格隱藏它不會傳遞任何價值。「誰告訴你的?這不是真的 – 2010-10-27 10:45:48

+0

@pekka:謝謝澄清.. – Fero 2010-10-27 10:49:17

+0

如果你不想要它的價值,不要給它起一個名字。 – Wrikken 2010-10-27 11:11:26

回答

4

將輸入(或其容器div)設置爲hidden不會阻止將輸入發送到服務器。

隱藏容器時,您將不得不物理刪除該元素,或將其值設置爲null。爲了不失去原始值,請將其存儲在臨時變量或輸入對象的屬性中。

+1

另請注意,將「disabled」屬性添加到輸入將會阻止提交它的值。 – chris 2012-12-08 21:36:49

2

所有字段包括隱藏,都張貼到Web服務器。

2

不幸的隱藏字段,即使是'display:none'HTML組件,都被髮送到服務器。

可能的解決方案可能是添加另一個<input type="hidden" .../>字段,並在顯示/隱藏div時更改其值,因此,如果您需要「考慮」「dealImage_xxx」的值,您將在服務器端意識到這一點。

+2

幸運其實;) – NOtherDev 2010-10-27 11:02:10

+0

^像_A._說... – Wrikken 2010-10-27 11:10:32

+0

我說「不幸」,因爲oezi當然假設:-) – 2010-10-27 12:16:28