【问题标题】:How do I get an asp.net 3.5 textbox input into JavaScript?如何将 asp.net 3.5 文本框输入到 JavaScript?
【发布时间】:2010-09-18 09:42:25
【问题描述】:

查看许多论坛,这似乎是解决方案,但是,它似乎对我不起作用:

 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>  

似乎我缺少一些简单的东西?我还尝试在

中使用单引号

更改时会弹出“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>  

与:

function update(x) {

     alert(x);


 }  

【问题讨论】:

  • 您的 JavaScript 位于何处?在aspx页面?
  • 您能否从浏览器“查看源代码”,并确认document.getElementById() 中的id 与文本框的id 匹配?
  • @Russ Cam:它在外部 .js 中 - 添加在母版页中 - 并且确实有效当你好世界弹出时。
  • @Daniel Vassallo:在 html 中,id 是一个奇怪的动态 id,我也匹配它吗?我在哪里可以看到 document.getElementById() 中的 id 变成了什么?
  • @Greg:是的,它应该是动态的。例如:document.getElementById('ctrl_00incl') 应与代码中某处的 &lt;input type="text" id="ctrl_00incl" /&gt; 匹配。

标签: javascript asp.net html windows


【解决方案1】:

这不起作用的原因是 JavaScript 位于一个外部 js 文件中,该文件不经过处理管道并且是从磁盘静态提供的。服务器端标签需要经过处理管道渲染出服务器控件的id字符串。

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

【讨论】:

  • 好吧,这确实有道理,我相信你的话......谢谢。但是,我不敢相信没有办法将该管道连接到外部文件......太疯狂了。
  • @RPM1984:如果你回答,我仍然会给你+1...哈哈,真的没有。
  • 呵呵,这就是我的意思,我只在我要发布答案之前看到“发布了新答案”。我想,到底是什么,我不妨发布我的答案。不管怎样,你的问题解决了,这是最重要的。
  • 嗯,有一些方法可以让带有服务器标签的 JavaScript 通过管道运行,但它需要一些技巧,因为脚本进入用户控件。尽管脚本需要页面上下文来获取控件 ID,但这仍将最终与页面一起发送脚本
【解决方案2】:

您的问题是您的 JavaScript 文件是外部的,因此它无法看到或感知当前 HTML 页面和服务器之间的连接。

这可能是你最好的选择

在页面上声明一个文字控件:

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

将其设置为客户端 ID:

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

然后你可以从你的外部JS文件中访问它:

document.getElementById(myclientid);

HTH

【讨论】:

    【解决方案3】:

    为什么不简单地传递“this”而不是“this.value”? (显然,实际代码中没有引号。)如果您传递实际的字段对象,您可以派生 id、值、任何父母、祖父母或兄弟姐妹在旧 DOM 邻域中闲逛——您将获得一个可重用的块无需硬编码 id 值即可放入任何地方的代码。 (即使代码只在这个表单上使用过,当您决定彻底检查表单时会发生什么?)

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 1970-01-01
      • 2017-02-10
      • 2019-02-02
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 2015-02-20
      相关资源
      最近更新 更多