用控件的Display=none或block属性隐藏控件,显示问题,请大侠赐教!

望京最帅程序猿 2009-04-28 11:44:01
问题是这样的,我用一个CheckBox控制一个TextBox的显示,选中则显示,不选中的则不显示。默认情况下是不显示的。当页面提交,页面Check,提交未成功,对提示信息点确定,返回页面后,所有的TextBox都不显示了,但是正确的页面是选中的Checkbox的对应的TextBox应该显示出来的。我觉得他是读取了默认的设置。请大侠赐教!
代码片段如下:
function CheckEvent(chkbox,hdn,txtbox,trMemoID,flg)
{
if(document.getElementById(chkbox).checked)
{
var hdnMark = document.getElementById(hdn).value;
txtSumMark.value = parseInt(txtSumMark.value) + parseInt(hdnMark);
objTxtbox.value = document.getElementById(hdn).value;

//txtbox的下一个兄弟,注意这两个组件之间不能有空格或换行
objTxtbox.nextSibling.value= document.getElementById(hdn).value;

objTrMemo.style.display="block";


objTxtMemo.select();
}
else
{
if(!pattern.exec(objTxtbox.value))
{//取消时,如果不是数字,总和应该减去旧值
txtSumMark.value = parseInt(txtSumMark.value) - parseInt(objTxtbox.nextSibling.value);
}
else
{//是数字,总和减去新值
txtSumMark.value = parseInt(txtSumMark.value) - parseInt(objTxtbox.value);
}
objTxtbox.value="";
objTxtbox.nextSibling.value="";

//取得备注textbox对象
objTxtMemo.value="评分备注";

objTrMemo.style.display="none";
}
}

<tr>
<td style="width:80%">
<asp:CheckBox ID="MinusItemCB" runat="server" Checked="false"/> <%# Container.ItemIndex + 1%>、
asp:Label ID="MinusItemContent" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.DetailContent") %>'></asp:Label> 
<asp:HiddenField ID="MinusItemID" Value='<%# DataBinder.Eval(Container, "DataItem.ID") %>' runat="server" />
<asp:HiddenField ID="MinusMark" Value='<%# DataBinder.Eval(Container, "DataItem.Mark") % >' runat="server" />
</td>
<td style="width:20%">
<asp:TextBox ID="MinusFactMark" runat="server" Width="89%" Text=""></asp:TextBox><asp:HiddenField ID="OldMinusFactMark" runat="server" Value="0"/>
</td>
</tr>
<tr id="trMinusMemo" runat="server" style="display:none">
<td colspan="2">
<asp:TextBox ID="txtMinusMemo" runat="server" TextMode="MultiLine" Rows="3" Width="90%" Text="评分备注"></asp:TextBox>
</td>
</tr>
...全文
936 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
感谢5楼和3楼的宝贵答案,问题已结局。
我的方法有点笨,就是写了个showTextbox(),
在数据绑定完,就再执行一遍这个函数。PageLoad函数了也调用。
后来照着5楼的改进了一下。
Martin-月影 2009-04-29
  • 打赏
  • 举报
回复
在 window.onload 事件里面再根据你的 checkbox 状态去显示或隐藏 你的textbox 就OK了
  • 打赏
  • 举报
回复
补充说明:问题出现在页面提交后,再返回页面时,所有的TextBox都隐藏了。怎么做才能做到,页面返回后,该显示的还显示,不该显示的隐藏。是不是页面Load时写个处理?
slove1116 2009-04-28
  • 打赏
  • 举报
回复

<div style="background-color:Gray">
<table class="defaultTable">
<tr>
<td height="12px" align="right">
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="javascript:ShowDiv();">显示/隐藏</asp:HyperLink>
</td>
</tr>
</table>
<div id="CL" style="display: block;">

<uc1:CL ID="CL1" runat="server" />

</div>
</div>



<script type="text/javascript">
function ShowDiv() {
var Layer_choice;

//选择div
if (document.getElementById) { //Netscape 6.x
Layer_choice = eval("document.getElementById('CL')");
}
else { // IE 5.x
Layer_choice = eval("document.all.choice.CL");
}
if (Layer_choice.style.display == 'block') {
Layer_choice.style.display = 'none';
}
else {
Layer_choice.style.display='block'
}
}
</script>
maddemon 2009-04-28
  • 打赏
  • 举报
回复
后退的话比较麻烦...

提交改成ajax提交 这样就不存在后退问题了 ^_^
中年秃头大叔 2009-04-28
  • 打赏
  • 举报
回复
说的比较不明白...

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧