代码之家  ›  专栏  ›  技术社区  ›  Orson

如何从外部JavaScript文件访问服务器控件?

  •  0
  • Orson  · 技术社区  · 16 年前

    当我用这个的时候 "#<%= txtNumberOfDrugsInKit.ClientID %>" ,我可以从JQuery脚本访问服务器控件;但当我把它放在一个外部脚本文件中时,它就不起作用了。

    如何从外部JavaScript文件访问asp文本框?我不敢相信这是行不通的。

    5 回复  |  直到 16 年前
        1
  •  2
  •   Tim Banks    16 年前

    我想这篇文章会帮你的。 http://lanitdev.wordpress.com/2009/06/08/extending-jquery-to-select-asp-controls/

    我使用了这个解决方案,它可以很好地选择服务器控件,而无需添加额外的标记。

        2
  •  3
  •   Community Mohan Dere    9 年前

    var Controls = {
        'Name':<%="'" + txtNumberOfDrugsInKit.ClientID%>',
        'OtherName':<%="'" + otherControl.ClientID%>'
    };
    

    这里的诀窍是,你必须把它放在头中,否则你不能从外部文件中使用它,所以你必须添加 runat="server"

    然后我可以在外部脚本中使用该控件对象,如下所示:

    var OtherElement = document.getElementById(Controls.OtherName);
    

    或

    var jQueryObj = $('#' + Controls.OtherName);
    


    Can I count on ctl00_PagePlaceHolder_myId staying the same?

        3
  •  0
  •   mkoryak    16 年前

    #<%= txtNumberOfDrugsInKit.ClientID %> ,所以它当然不能在外部js中工作,因为它们是静态服务的,而不是在服务器端处理的。

    我认为您不完全了解服务器上运行的代码和客户端上运行的代码。将该数据传递到外部脚本中的一种方法是将其放入隐藏的输入或隐藏的div中,然后从外部脚本中的DOM元素读取数据。

        4
  •  0
  •   Jan Hančič    16 年前

    你必须“硬编码”身份证。

    但是,如果您对ASP.NET生成的“怪异”ID有问题,那么您可以将ClientID放入一个隐藏字段中,并从外部JS文件中读取它

        5
  •  0
  •   Scott Ivey    16 年前

    我过去所做的就是使用CSS名称来解决这个问题。在txtNumberOfDrugsInKit控件上,可以执行以下操作。。。

    <asp:TextBox ID="txtNumberOfDrugsInKit" CssClass="txtNumberOfDrugsInKit" ... />
    

    然后在jQuery中,而不是作为 $("#<%= txtNumberOfDrugsInKit.ClientID %>") $(".txtNumberOfDrugsInKit") . 只要你在你的页面上保持这些选择器的唯一性——用它只选择一个控件是没有问题的。