ASP文本框默认为JS不可见且可见

时间:2014-11-03 14:13:04

标签: javascript c# jquery asp.net checkbox

我有一个初始不可见的文本框和复选框OnClick JS方法,我希望按钮可见,

最初复选框似乎不可见但是当我点击复选框时,JS方法会给我错误,找不到对象。如果我从文本框代码中删除Visible =“false”工作正常。

<asp:Textbox id="day" runat="server" Visible="false" />

 <asp:CheckBox ID="parts" runat="server" onClick="Click();" />

 <script type="text/javascript">
 function Click(){
 document.getElementById("day").style.visibility = "visible";

 //ERROR **0x800a01a8 - Microsoft JScript runtime error: Object required**
 }
  </script>

// ERROR 0x800a01a8 - Microsoft JScript运行时错误:需要对象

2 个答案:

答案 0 :(得分:1)

使用静态ID模式,使用自动生成的id

来停止它

e.g。

<asp:Textbox id="day" ClientIDMode="Static" runat="server" Visible="false" />

同样,当你将其标记为jQuery时,更简单的jQuery可能看起来像这样(如果代码遵循页面上的元素):

   $('#day').click(function(){
       $(this).show();
   });

或者如果代码在元素之前,则将其包装在DOM就绪处理程序中:

$(function(){
       $('#day').click(function(){
           $(this).show();
       });
});

$(function(){...});只是$(document).ready(function(){...});

的便捷快捷方式

答案 1 :(得分:1)

当你使用visible=false时,它永远不会在页面上呈现,暗示,你不能document.getEle..,它总是会给你null值,因此会抛出错误。

  

如果此属性为false,则不呈现服务器控件。 - MSDN

如何解决此问题

所以它使它工作,你需要使用javascript隐藏它,然后使用javascript使其可见。

<asp:TextBox ID="day" runat="server" style="display:none;" />
<asp:CheckBox ID="parts" runat="server" onClick="Click();" />

<script type="text/javascript">
    function Click() {
        document.getElementById("day").style.display = "block"; // use "none" to hide
    }
</script>