这是我的JS:
<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,如果样式被隐藏,它将不会传递任何值。
怎样才能解决这个问题。任何想法都会有所帮助。提前谢谢
答案 0 :(得分:5)
将输入(或其容器div
)设置为hidden
不会阻止输入发送到服务器。
隐藏容器时,您必须以物理方式删除元素,或将其值设置为null
。为了不丢失原始值,请将其存储在临时变量或输入对象的属性中。
答案 1 :(得分:2)
包括隐藏在内的所有字段都会发布到网络服务器。
答案 2 :(得分:2)
不幸的是,隐藏字段,甚至是“display:none”HTML组件,都会被发送到服务器。
一个可能的解决方案是添加另一个<input type="hidden" .../>
字段并在显示/隐藏div时更改其值,因此如果您需要“考虑”“dealImage_xxx”的值,您将在服务器端知道或不