【问题标题】:Can't read value from textbox into javascript variable无法将文本框中的值读入 javascript 变量
【发布时间】:2012-04-25 13:20:38
【问题描述】:

您好,我正在尝试在从服务器填充到 javascript 变量后读取文本框(runatserver),但它给了我一个控制台错误“无法读取表单 NULL”但是文本框由我想读的字符串

这是我的文本框:

 <form runat="server">

        <asp:TextBox ID="ServerSideTextBox" runat="server" />
    </form>

这就是我在 C# 中填充它的方式:

ServerSideTextBox.Text= Object_JSON_Class.JSON_DataTable(dt);

它获得了正确的数据也显示了正确的数据字符串,但问题是当我尝试像这样读取文本框的值时:

 var oServerSideTextBox= document.getElementById("ServerSideTextBox"); 
var oServerJSON_String=eval("("+oServerSideTextBox.value+")"); 

我收到一个控制台错误,我无法从 NULL 中读取,但文本框确实有我想读入 javascript 变量的字符串,请帮助

【问题讨论】:

    标签: c# javascript asp.net html json


    【解决方案1】:

    阅读 cmets。我认为您指的是错误的文本框ID .. 所以我做了一个小测试:这应该可以工作。如果不是从你的 HTML 中查看源代码 - 你可以在那里看到 ID。

    <script type='text/javascript'>
        function testvalue() {
            var oServerSideTextBox = document.getElementById('<%=ServerSideTextBox.ClientID%>');
            if (oServerSideTextBox == null) {
                alert('this is null');
            }
            else {
                alert(oServerSideTextBox.value);
            }
        }
    </script>
    
    
    
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="ServerSideTextBox" runat="server" Text="Testvalue" />
            <input type='button' onclick='testvalue();' value='Click' />
        </div>
        </form>
    </body>
    

    【讨论】:

      【解决方案2】:

      如果您在母版页结构中使用它,您的服务器文本框的 ID 会有所不同,请尝试找到它的 ID。因为它的实际 ID 可能类似于 ctl00_ContentPlaceHolder1_ServerSideTextbox。检查一下。

      为你的文本框分配一个类,然后尝试这个来查找 id。

      $('.textbox').on('blur', function() {
      
              var error = this.id;
              alert(error);
                                             )};
      

      【讨论】:

      • 我现在没有使用母版页结构,如何找到文本框的实际ID?
      • @Snedden27,你试过了吗
      • 嗯,可笑,但弹出窗口中的 ID 相同,即 ServerSideTextBox ,
      • @Snedden27 ,奇怪我前段时间遇到过类似的问题,我的问题是id。
      • @Snedden27 ,你是否也在其他浏览器中检查过这个
      【解决方案3】:
       var txtToIncr = document.getElementById('<%=ServerSideTextBox.ClientID%>')
      

      查看link,关于通过 javascript 读取 ASP.Net 控件

      【讨论】:

      • 检查您生成的 HTML 并查看针对 serversidetextbox id 呈现的内容
      • 我看到 id 也是一样的,即 serversidetextbox(忽略大写)
      • 尝试 var t = document.forms[0]['ServerSideTextBox'].value;看看它是否获得了价值
      • 不行,我也读过你给我的链接,根据它。ClientID 应该可以解决问题,但不是,可能是因为其他原因,然后 ID 不匹配,可以t弄清楚我哪里出错了
      • 那么,你确定错误是由这段代码产生的:var oServerSideTextBox= document.getElem....;可能你之前的 javascript 行有错误
      【解决方案4】:

      把它放在你的文本框ClientIDMode="Static"

      【讨论】:

        【解决方案5】:

        试试这个:

        var oServerSideTextBox= document.getElementById("&lt;%=ServerSideTextBox.ClientID%&gt;");

        如果这不起作用,请尝试以下操作:

        var oServerSideTextBox= document.getElementById("&lt;%=ServerSideTextBox.ClientID%&gt;_text");

        当客户端的浏览器呈现时,组件被分配了不同的 ID。您可以查看here了解更多信息。

        【讨论】:

          猜你喜欢
          • 2013-10-17
          • 1970-01-01
          • 1970-01-01
          • 2018-02-08
          • 1970-01-01
          • 1970-01-01
          • 2013-09-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多