2012-09-28 116 views
0

我有一个文本框;将参数传递给事件处理程序从aspx到jquery

<input runat="server" type="hidden" value="0" id="input1" name="input1_name">

我有一个div;

<div id="div1"> some content </div> 

我有一个单独的.js文件,我有一个在页面加载时加载的函数。在该功能我:

$("#div1").click(function(e){ definition; });

我想通过上面在上scenario.I单击处理中提到的输入控制的客户端ID一直无法使用属性ClientID以上上述的JavaScript文件。休息一切工作正常。

请指教如何将参数传递给aspx页面上的控件的click处理程序到javascript文件(以获得ClientID的方式)。

这是在.NET上。

请让我知道万一我需要在这里发布任何更多的细节,如果有什么看起来模糊。

+0

你只需要打印值到DOM,将它变成输入中的属性,比如'值=“客户端ID”,然后在你的点击函数,引用$('#input1')。val();获得价值,现在这将是客户端ID。 – Ohgodwhy

+0

input1不会在js文件上用ID“input1”访问。它是一个runat服务器控件。 –

回答

3

根据您使用的ASP.NET版本,您有几个选项。

ASP.NET 4.0之前,你可以做这样的事情:

<script type="text/javascript"> 
    function DoSomething(){ 
     alert('<%= Control.ClientID %>'); 
    } 
</script> 

在ASP.NET 4.0中引入的新功能:ClientIDMode

<asp:TextBox ID="myCustomId" runat="server" Width="65%" ClientIDMode="Static" /> 

将输出:

<input id="myCustomId" style="width: 65%" name="ctl00$MasterPageBody$ctl00$txtEcho2" /> 

如果您使用静态ClientIDMode,则可以在JavaScript中使用Id任何问题。

这里是一个不错的博客,解释了不同的选择:ASP.NET 4.0 ClientID Overview

+0

谢谢Wouter。 Incase我正在使用较旧的版本,对于相同的解决方案,有什么可以做的。正如你在第一部分中提到的,.ClientID只能在脚本是其他js文件的一部分时使用。纠正我,如果我错了。 –

+0

第一部分适用于旧版本!由于<%= %>服务器会将正确的值放入JavaScript中。 –

+0

上述文章的内容非常丰富。有趣的阅​​读。 –

相关问题