2010-09-01 54 views
1

我有以下的控制:取消隐藏ASP文本框控件的Javascript功能

<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:名称'文本框1'未被声明。

感谢您的任何帮助/建议。

回答

1

如果您将服务器端visible属性设置为false,则不会在客户端上呈现控件。这也是为什么你可以得到textbox1错误信息。相反:

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

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

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

要显示它。

+0

尽管这是一个编译器错误,getElementById没有返回null ...你确定这是问题吗? – asawyer 2010-09-01 18:20:58

+1

@Brian在'TextBox'上没有'style'属性。他必须关联一个css类。 – 2010-09-01 18:23:40

+0

我也遇到了编译错误,但它是一个不同的问题。我会接受Vinay的答案,但OnClientClick似乎是解决这个问题的答案。 – Jay 2010-09-01 18:23:52

4

onclick on a button is bound to a server side method。 使用正常的html按钮或使用OnClientClick在asp:按钮上。在服务器上的文本框中设置可见的false也不会使控件在第一个地方试图隐藏它,通过设置一个显示无显示的CSS。

+0

你打我吧.. +1 – 2010-09-01 18:22:57

+0

我实际上是在使用OnClientClick,当我准备这个问题时,这只是一个错误。感谢您的发布。 – Albert 2010-09-01 19:53:01