带有动态ASP.NET标记的外部javascript文件中的jQuery触发器

时间:2014-01-17 12:59:27

标签: javascript jquery asp.net

我的.aspx页面中有这个代码:

$("#city, #<%=tbSiteSearch.ClientID%>").on('keydown', function (e) {

正如您所看到的,我正在动态地注入服务器端控件的clientid。

现在,当我将此代码行移动到外部.js文件时,我不再具有ASP.NET标记的可用性。

如何将代码移动到外部.js文件,同时仍然能够动态地在该服务器控件上添加触发器?请提供有关如何操作的代码示例:)

3 个答案:

答案 0 :(得分:2)

一种简单的方法是包含&lt;%= tbSiteSearch.ClientID%&gt;在您的HTML中(在隐藏的容器中)。

  <div id="myvalue" class="hidden"> <%=tbSiteSearch.ClientID%> </div>

然后任何js文件都可以使用此值:

var id = $("#myvalue").text();
$("#city, #"+id).on('keydown', function (e) {

答案 1 :(得分:1)

你可以在ASPX中使用这样的东西:

<script>
     var tb=<%=tbSiteSearch.ClientID%>;
</script>

然后在你的JS文件中使用它:

$("#city, #"+tb).on('keydown', function (e) {

答案 2 :(得分:0)

IIS上的ASP.NET处理对某些类型文件的请求。您可以通过打开Internet信息服务(IIS)管理器,选择您的站点并打开“处理程序映射”来查看此列表,您将看到该ASP。 NET(和其他)列出其各自的文件扩展名。 如果要添加要由ASP.NET处理的javascript,则需要添加具有以下值的脚本映射:

请求路径:* .js 可执行文件:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll 名称:Javascript ASP Handler

我真的不会推荐这种方法,因为ASP.NET会为最小的好处做更多的工作。

为元素分配ID或类并根据它进行选择会更好。