1

您好,我正在尝试在从服务器填充到 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 变量的字符串,请帮助

4

5 回答 5

1
 var txtToIncr = document.getElementById('<%=ServerSideTextBox.ClientID%>')

查看此链接,关于通过 javascript 读取 ASP.Net 控件

于 2012-04-13T06:51:24.663 回答
1

试试这个:

var oServerSideTextBox= document.getElementById("<%=ServerSideTextBox.ClientID%>");

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

var oServerSideTextBox= document.getElementById("<%=ServerSideTextBox.ClientID%>_text");

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

于 2012-04-13T06:52:05.480 回答
0

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

于 2012-04-13T06:52:12.140 回答
0

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

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

$('.textbox').on('blur', function() {

        var error = this.id;
        alert(error);
                                       )};
于 2012-04-13T07:03:42.840 回答
0

阅读评论。我认为你指的是错误的文本框 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>
于 2012-04-13T07:41:39.547 回答