2010-10-27 3 views
1

Voici mes JS:valeur cachée passe alors que le style d'affichage de la div est pas en utilisant 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> 

et 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> 

Lorsque je clique sur le bouton Supprimer l'image se cache. Mais quand je soumets le formulaire j'obtiens la valeur du type caché.

Mais Selon div si le style est caché, il ne passera aucune valeur.

Comment peut résoudre ce problème. Toute idée sera utile et utile. merci d'avance

+4

'Mais Selon div si le style est caché, il ne passera aucune valeur.» Qui vous l'a dit? Ce n'est pas vrai –

+0

@pekka: merci pour la clarification .. – Fero

+0

Ne lui donnez pas de nom si vous ne voulez pas ses valeurs. – Wrikken

Répondre

4

La définition d'une entrée (ou de son conteneur div) sur hidden n'empêche pas l'envoi d'être envoyé au serveur.

Vous devez supprimer physiquement l'élément ou définir sa valeur sur null lorsque vous masquez le conteneur. Pour ne pas perdre la valeur d'origine, stockez-la dans une variable temporaire ou une propriété de l'objet d'entrée.

+1

Notez également que l'ajout de l'attribut 'disabled' à une entrée empêchera sa valeur d'être soumise. – chris

2

Tous les champs y compris caché, sont affichés sur le serveur web.

2

Malheureusement, les champs cachés, même dans les composants HTML 'display: none', sont envoyés au serveur. Une solution possible pourrait être d'ajouter un autre champ <input type="hidden" .../> et de changer sa valeur lorsque vous affichez/masquer le div, vous serez donc conscient du côté serveur si vous devez "considérer" la valeur de "dealImage_xxx" ou non.

+2

Heureusement en réalité;) – NOtherDev

+0

^Comme _A._ a dit ... – Wrikken

+0

J'ai dit "malheureusement" à cause de l'hypothèse d'oezi bien sûr :-) –

Questions connexes