【问题标题】:Unhide ASP Textbox control in Javascript Function在 Javascript 函数中取消隐藏 ASP 文本框控件
【发布时间】:2010-09-01 18:13:46
【问题描述】:

我有以下控制:

<asp:TextBox ID="textbox1" runat="server" Width="95px" MaxLength="6" />

我希望在页面加载时隐藏/不可见,并在单击按钮/运行一些 javascript 而不重新加载页面后显示文本框。

这是我当前的按钮:

<asp:Button ID="cmdShowBox" runat="server" Text="Show Button" onclick="showBox(); return false"  />

最后这是我当前的 javascript 函数:

                function showBox() {
                var theControl = document.getElementById("<%= textbox1.ClientID %>");
                theControl.style.display = "none";


                }

我一开始只是在加载时显示该框,然后尝试单击一个按钮使其隐藏,但我什至无法让它工作:(当我运行上面的代码时,我得到了一个服务器错误提示

编译器错误消息:BC30451:未声明名称“textbox1”。

感谢任何帮助/建议。

【问题讨论】:

    标签: .net javascript asp.net


    【解决方案1】:

    onclick 按钮绑定到服务器端方法。 使用普通的 html 按钮或在 asp:button 上使用 OnClientClick。在服务器上的文本框上设置可见 false 甚至不会首先尝试通过设置不显示的 css 来隐藏它。

    【讨论】:

    • 我实际上是在使用 OnClientClick,这只是我准备这个问题时的输入错误。谢谢你的帖子。
    【解决方案2】:

    如果您将服务器端可见属性设置为 false,则根本不会在客户端上呈现控件。这也是您可以收到 textbox1 错误消息的原因。而是这样做:

    <asp:TextBox id="textbox1" ... style="display:none" />
    

    然后这个元素被渲染,但被隐藏了。那么这应该可以工作。

    function showBox() {
        var theControl = document.getElementById("<%= textbox1.ClientID %>");
        theControl.style.display = "";
    }
    

    展示它。

    【讨论】:

    • 这是一个编译器错误,getElementById 没有返回 null...你确定这是问题吗?
    • @Brian TextBox 上没有 style 属性。他必须关联一个 CSS 类。
    • 我在尝试该问题时也遇到了编译错误,但它是不同的。我会接受 Vinay 的回答,尽管使用 OnClientClick 似乎是解决这个问题的答案。
    • "@Brian TextBox 上没有样式属性。他必须关联一个 css 类。"这是我在尝试完成这项工作时遇到的主要问题..
    • 好的,所以我能够将 style="display:none" 标记应用于文本框,这很有效。然后我唯一的问题(我没有包含在我的原始帖子中)是 textbox1.ClientID 引用不起作用,因为控件位于 formview 控件中。所以我像这样引用它: var theControl = document.getElementById("formview1$textbox1");和 theControl.style.display = "inline";哪个有效!感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    相关资源
    最近更新 更多