【问题标题】:ASP Textbox default invisible and visible from JSASP Textbox默认不可见,从JS可见
【发布时间】:2014-11-04 02:24:58
【问题描述】:

我有一个最初不可见的文本框和复选框 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>

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

【问题讨论】:

  • 在服务器端控件上设置Visible="false"意味着它永远不会呈现给浏览器。
  • 如果我在 onload 函数上设置,也会发生同样的情况。我在 javascript 中遇到同样的错误
  • 如果您在浏览器中查看输出页面,您还会注意到文本框 id 不是 "day"。您还需要设置clientid="day"或更改ID生成方式。
  • 你也可以试试 getElementById('') 或 getElementById('')

标签: javascript c# jquery asp.net checkbox


【解决方案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>

【讨论】:

    【解决方案2】:

    改用静态 id 模式,使用自动生成的id 停止它:

    例如

    <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(){...}); 的便捷快捷方式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多