使用javascript函数获取asp:客户端文本框值不起作用

时间:2011-07-02 04:58:43

标签: c# javascript asp.net

此代码不显示值,我不知道为什么?

我有服务器控制:

<asp:TextBox ID="txtTest" runat="server" Visible="false" TextMode="MultiLine"
                    Rows="3" Columns="23" CssClass="white-scroll" />

在javascript函数中:

var eventText = document.getElementById('<%=txtTest.ClientID%>').value;
alert (eventText);

我输入文字然后点击调用javascript函数的按钮,但警告框不会显示输入的文字。

编辑:当我使用Text =“some text”初始化文本时,它会在alert中显示,我想在客户端输入文本并在Javascript函数中获取它的值。

由于

5 个答案:

答案 0 :(得分:3)

使用标签或文本框可见的设置为false,以便它可以访问JavaScript中的值

溶胶

1)

   

创建一个div并设置style="display:none;",因此标签不会显示在UI(浏览器)上,但值可以在JavaScript中访问。

答案 1 :(得分:2)

这是因为你的服务器控件被称为“txtTest”而不是“txtEventDescription”

将您的javascript功能更改为:

var eventText = document.getElementById('<%=txtTest.ClientID%>').value; 
alert (eventText);

编辑:好的,我看到你现在已经改变帖子显示代码并重命名为js控件,所以上面不再相关(对于那些对我的答案感到困惑的人): - )

问题是Visible="false" - 此控件不会呈现到客户端,因此无法通过javascript访问(因为HTML元素不存在于客户端)

因此,使用CSS隐藏元素,然后在其上调用alert。示例代码段

CSS

.hide-element {
    display: none;
}

HTML标记

<asp:TextBox ID="txtTest" runat="server" 
        Columns="23" 
        CssClass="white-scroll hide-element"
        Rows="3"
        TextMode="MultiLine"/>

的JavaScript

var eventText = document.getElementById('<%=txtTest.ClientID%>').value;
alert (eventText);

这样你肯定会得到警报 您的警报为空,因为您尚未为Text

设置属性asp:Textbox

答案 2 :(得分:0)

Visible="true"设为您的文本框而不是测试。

<asp:TextBox ID="txtTest" runat="server" TextMode="MultiLine"
                    Rows="3" Columns="23" CssClass="white-scroll" />

答案 3 :(得分:0)

如果“txtTest”文本框中有visible =“false”,那么它不会在客户端计算机上的html代码上呈现,如果它没有在客户端的html代码上,那么javascript如何调用此文本框。因为当javascript按其ID搜索此文本框时,它找不到它并且它会出错。

答案 4 :(得分:0)

您可以为控件分配任何其他自定义属性,即

    <asp:TextBox ID="txtTest" runat="server" Visible="false" TextMode="MultiLine"
                        Rows="3" Columns="23" CssClass="white-scroll"
 clientID="myClientID" />

然后使用jquery进行访问控制,如

var txtVal = $('textbox[clientID=myClientID]').val();
希望它有所帮助。