无法将文本框中的值读入javascript变量

时间:2012-04-13 06:47:52

标签: c# javascript asp.net html json

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

5 个答案:

答案 0 :(得分:1)

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

查看此link,了解如何通过javascript阅读ASP.Net控件

答案 1 :(得分:1)

试试这个:

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

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

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

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

答案 2 :(得分:0)

将其放在文本框ClientIDMode="Static"

答案 3 :(得分:0)

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

将一个类分配给yout文本框,然后尝试此查找id。

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

        var error = this.id;
        alert(error);
                                       )};

答案 4 :(得分: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>