【问题标题】:get asp:textbox value in client side using javascript function doesn't work使用 javascript 函数在客户端获取 asp:textbox 值不起作用
【发布时间】:2011-07-02 04:58:42
【问题描述】:

这段代码不显示值,不知道为什么?

我有服务器控制权:

<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" 初始化文本时,它显示在警报中,我想在客户端输入文本并在 Javascript 函数中获取它的值。

谢谢

【问题讨论】:

  • 警报显示什么?还是有任何 javascript 错误?
  • 完成后接受答案。
  • @Shimaa:请参阅 Dave Longs 更新的答案。
  • TextBox 是 Visible="false" 这意味着它是隐藏的,那么你在哪里输入了 Text?
  • 它在另一个控件中设置为true,这是其他代码的一部分

标签: c# javascript asp.net


【解决方案1】:

使用 label 或 textbox visible 设置为 false 以便它可以访问 JavaScript 中的值

溶胶

1)

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

【讨论】:

    【解决方案2】:

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

    将您的 javascript 函数更改为:

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

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

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

    因此,使用 CSS 隐藏元素,然后对其调用 alert。示例 sn-p

    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);
    

    这样您肯定会收到警报。
    您的警报为空,因为您尚未为您的asp:Textbox 设置属性Text

    【讨论】:

    • 怎么说是“txtText”?
    • mm 抱歉,我在帖子中更改了 nae,忘记更改另一个,但这不是问题
    • 我点击了编辑链接,发现控件名称与 js 脚本不同……他现在编辑了他的代码(我还没有编辑权限,否则会编辑他的代码以显示
    • +1 戴夫。 @sourabh,-1 不公平。您可以清楚地看到 OP 已经编辑了问题。
    • @Dave Long:更新了一些示例代码。希望你不要介意。
    【解决方案3】:

    Visible="true" 设为您的文本框,然后进行测试。

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

    【讨论】:

    • 这是其他代码的一部分,确保它在测试时可见:)
    • 但在您的问题中设置为 false ??
    【解决方案4】:

    如果 "txtTest" 文本框具有 visible="false" 在这种情况下它不会呈现在客户端机器上的 html 代码上,如果它没有呈现在客户端的 html 代码上,那么 javascript 如何调用此文本框。因为当 javascript 通过它的 id 搜索这个文本框时它没有找到并且它给出了一个错误。

    【讨论】:

      【解决方案5】:

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

          <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();
      

      希望对你有帮助。

      【讨论】:

      • 当我使用 JQuery 时,我得到了相同的结果;在服务器中设置文本时我得到它,但如果我在客户端设置它,则没有
      • 那么可能还有其他问题,这种技术已经过测试:)
      • 此代码在用户控件(.ascx 文件)内,可能有关系吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多