如何将asp.net 3.5文本框输入到JavaScript中?

时间:2010-09-17 23:20:54

标签: javascript asp.net html windows

在许多论坛上看来,这似乎是解决方案,然而,它似乎对我不起作用:

 function update() {

     alert("hello world");

     var test = document.getElementById("<%=InCL.ClientID%>").value;    

     alert(test);

 } 

和asp / html是:

<asp:TextBox ID="InCL" runat="server" Text="" value="" onchange="update()"></asp:TextBox>  
似乎我错过了一些简单的东西?我还尝试使用单引号&lt;%= InCL.ClientID%&gt;

警告“hello world”会在更改时弹出,但不会用于测试......

使用asp.net 3.5,FF,母版等......

感谢。

修改
所以我把它更改为使用this.value并且有效,但仍然没有解决方法如何通过id获取它?

工作:

<asp:TextBox ID="InCL" runat="server" Text="" value="1" onchange="update(this.value)"></asp:TextBox>  

with:

function update(x) {

     alert(x);


 }  

3 个答案:

答案 0 :(得分:3)

这不起作用的原因是JavaScript位于外部js文件中,该文件不通过处理管道并且是从磁盘静态提供的。服务器端标记&lt;%= InCL.ClientID%&gt;需要通过处理管道来呈现服务器控件的id字符串。

解决此问题的最简单方法是将脚本元素放在页面中。其他方法是仅定义页面中具有服务器标记的JavaScript并分配给全局变量。然后在全局变量声明和赋值之后定义外部脚本 - 然后可以在外部脚本文件中使用此变量。

答案 1 :(得分:1)

您的问题是您的JavaScript文件是外部的,因此它无法查看或了解当前HTML页面与服务器之间的布线。

这可能是你最好的选择

在页面上声明文字控件:

<asp:Literal id="variables" runat="server" />

将其设置为客户端ID:

variables.Text = string.Format("var myclientid='{0}';", Incl.ClientID);

然后您可以从外部JS文件访问它:

document.getElementById(myclientid);

HTH

答案 2 :(得分:1)

为什么不简单地传递“this”而不是“this.value”? (显然在实际代码中没有引号。)如果你传递了实际的字段对象,你可以导出id,值,任何父母,祖父母或兄弟姐妹在旧的DOM社区附近 - 你可以得到一个可重复使用的块可以在任何地方删除的代码,而无需对id值进行硬编码。 (即使代码只在这一个表单中使用过,当您决定对表单进行大修时会发生什么?)