如何从代码中读取JavaScript设置的文本框文本?

时间:2014-11-04 13:33:16

标签: javascript c# asp.net

我的页面上有一个ASP.net文本框。我正在使用JavaScript设置此文本框的文本属性。现在,我想从后端访问此文本值(使用C#)。但是,每当我尝试访问它时,我都会获得旧值(在页面加载期间设置的值),并且我无法获取JavaScript代码设置的值。 我在这里错过了什么吗?

文本框的ASPX标记 -

<asp:TextBox ID="txtMessage" runat="server"></asp:TextBox>

编辑此文本框的JavaScript -

var txtMessage = document.getElementById("txtMessage");
txtMessage.Value = "New Value";

用于访问文本框文本的C#代码 -

string strMessage = txtMessage.Text; // This does not return value set by above JS function

2 个答案:

答案 0 :(得分:1)

您只需在JavaScript中更改此行:

txtMessage.value = "New Value"; // the "v" in ".value" needs to be lowercase

更新:我设置了一个ASP.NET页面,以确保OP代码实际上可以使用这一个更改,只是为了确保我没有错过任何其他小错字。但是,正如Igor在他的评论中指出的那样,使用控件的ClientID属性来解释.NET运行时可能添加到HTML元素的任何前缀是一个好习惯。 s id。

因此,JavaScript中的两行应更改为此(也已确认可正常工作):

var txtMessage = document.getElementById("<%= txtMessage.ClientID %>");
txtMessage.value = "New Value";

答案 1 :(得分:0)

当ASP.Net提供要呈现的页面时,控件的名称会通过添加一个后缀来更改,该后缀标识容纳它们的容器。从JavaScript,您必须通过访问.ClientID属性来确保获得正确的ASP控件ID。

//gets the element by its ID according to ASP rules
var txtMessage = document.getElementById("<%=txtMessage.ClientID%>");

//the "value" property is lowercase
txtMessage.value = "New Value";