【问题标题】:Hide a ASP.Net label in Javascript on KeyPress在 KeyPress 上的 Javascript 中隐藏 ASP.Net 标签
【发布时间】:2012-02-06 14:24:36
【问题描述】:

我在 ASP.Net 4.0 网站上有一个标签,当用户在文本框中键入时,我试图隐藏它。

我有一个在文本框的 Keypressevent 上触发的 Javascript 函数。

所以,我的 Javascript 函数是:

function hideLabel(sender, e) {
    document.getElementById('<%=lblResult.ClientID%>').style.display = 'none';
}

我的文本框和标签如下:

<tr><td>
    <asp:Label ID="lblResult" runat="server" Visible="True"></asp:Label>
</td></td>
<tr><td>
  <asp:TextBox ID="txtEmailAddress" runat="server" Width="200px"
       CssClass="customtxt" onkeypress="hideLabel(this, event)"></asp:TextBox>
</td></td>

函数触发但我收到以下错误:Microsoft JScript 运行时错误:需要对象

我还在我的函数中尝试了以下代码行,但这也不起作用:

document.getElementById('lblResult').style.visibility = 'hidden';

任何人都知道为什么这在 IE 8 中失败 - 它在 Chrome 中正常工作。

【问题讨论】:

  • 几点:1)标签定义为你所做的,它实际上被呈现为&lt;span id="MainContent_lblResult"&gt;Text here&lt;/span&gt; - 这可能不是你想要的 - 你应该将AssociatedControlID设置为如果您想要 &lt;label&gt;,则为文本框的 ID。 2) 您是否尝试过打开 IE 开发者工具 (F12) 并检查控制台是否有错误?您拥有的代码应该可以工作,并且我已经测试了类似的设置(尽管在 IE8 模式下使用 IE9)。
  • 您的第二次 JS 尝试不起作用:控件可能没有您编写的 ID(您可以使用 ClientID 属性),并且 Visibility 是一个 ASP。 NET 属性在 DOM 中不存在。

标签: javascript asp.net label visible onkeypress


【解决方案1】:

我认为,在你的情况下,你不需要传递任何参数来运行:

    function hideLabel() {
    document.getElementById("<%=lblResult.ClientID%>").style.display = "none";
}

<asp:TextBox ID="txtEmailAddress" runat="server" Width="200px" CssClass="customtxt" onkeypress="hideLabel()"></asp:TextBox>

【讨论】:

    【解决方案2】:

    只要没有参数的方法就可以了。

    <script language="javascript" type="text/javascript">
        function hideIt() {
            document.getElementById('<%=myLabel.ClientID%>').style.display = 'none'; 
        }
    </script>
    

    更新:

    HTML 我的标签

    脚本 函数 hideIt() { document.getElementById('').style.display = 'none'; }

    我可以确认它确实有效.... 你用的是什么浏览器,我可以测试一下吗?

    【讨论】:

    • 我使用的是 IE8,但我刚刚在 Google Chrome 中尝试过,你说得对,它确实在那里工作。我的IE有一些设置吗?我在不同的表单上运行其他按键事件。
    • 这是我的代码,希望可以粘贴: function hideLabel() { alert("Here"); document.getElementById('').style.display = 'none'; } 我试过没有 () 的 hideLabel 调用但它仍然不起作用。这里还有标签框:
    • 你能在浏览器中渲染页面并发布html源吗?这一定与客户 ID 有关。
    • 好的,我已经完成了这项工作。在尝试此操作之前,我只需要检查标签是否为空。之后它就起作用了。但感谢所有帮助。
    【解决方案3】:

    几乎可以肯定的是,它没有找到您正在寻找的标签。查看生成的源代码并确保该标签存在于页面上,并且它具有 javascript 生成的输出中的 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 1970-01-01
      相关资源
      最近更新 更多