代码之家  ›  专栏  ›  技术社区  ›  Greg McNulty

如何将ASP.NET 3.5文本框输入到JavaScript中?

  •  0
  • Greg McNulty  · 技术社区  · 15 年前

    看看很多论坛,这似乎是解决方案,但是,它似乎不适合我:

     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>  
    

    我好像错过了一些简单的东西?我还尝试使用单引号,其中<%=including.clientid%>

    “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);
    
    
     }  
    
    3 回复  |  直到 15 年前
        1
  •  3
  •   Russ Cam    15 年前

    这不起作用的原因是JavaScript位于外部JS文件中,该文件不经过处理管道,而是从磁盘静态提供服务。服务器端标记<%=incl.clientID%>需要通过处理管道来呈现服务器控件的ID字符串。

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

        2
  •  1
  •   RPM1984    15 年前

    您的问题是您的javascript文件是外部的,所以它没有当前HTML页面和服务器之间的可视性或连接感。

    这可能是你最好的选择

    在页面上声明文本控件:

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

    将其设置为客户端ID:

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

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

    document.getElementById(myclientid);
    

    高温高压

        3
  •  1
  •   Stan Rogers    15 年前

    为什么不简单地传递“this”而不是“this.value”?(显然,实际代码中没有引号。)如果传递实际的字段对象,则可以派生出ID、值、挂在旧的dom邻居周围的任何父母、祖父母或兄弟姐妹,并且可以有一个可重用的代码块,可以放在任何地方而不必硬编码。ID值。(即使代码只用于这一个表单,当您决定彻底检查表单时会发生什么情况?)