我有一个主页,通过分配不同的ID动态加载同一用户控件的多个实例。
UC加载后,我需要使用JS来获取对文本框的引用。为此,我需要用户控件客户端ID。我可以访问服务器端的UC客户端ID,并可以使用此信息设置隐藏的表单变量。但是我遇到了从javascript引用这个表单变量的问题,因为我需要UC客户端ID才能这样做。
解决这个问题的最佳方法是什么?
答案 0 :(得分:2)
一种方法是发出js代码服务器端。例如,如果您需要在该文本框上调用函数 - 简单示例:
假设你有一些javascript:
function ShowMeTheId(id)
{ alert(id); }
在后面的代码中,您可以将类似的内容从按钮调用并传入您的文本框ID:
MyButton.OnClientClick = "ShowMeTheId('" + MyUserControl.TextBox1.ClientID + "'); return false;";
答案 1 :(得分:0)
如果我理解正确,您可以通过将其放在页面上的某些脚本标记之间来访问ID ...
var controlClientId = '<%= control.ClientID %>';
然后在你的js中使用controlClientId。
编辑:我并不完全清楚你的代码在做什么,但我假设你在循环中新建了一些控件的实例,并为它们分配一个唯一的我和他们添加?如果是这种情况,那么我会在你的代码隐藏中运行一个循环来查找所有控件并在客户端数组中注册它们,或者只是在它们被创建时执行它。
ClientScript.RegisterArrayDeclaration("ControlIds", String.Concat("'", Control.ClientID, "'"))
然后你可以在你的Javascript中做这样的事情......
for (var i = 0; i < ControlIds.length; i++) alert(ControlIds[i]);
答案 2 :(得分:0)
几种方式 -
使用css类从javascript引用您的控件。警告:按类名获取元素比通过id获取元素要慢,特别是如果你经常这样做。
您可以使用&lt;%= userClient.ClientID%&gt;
有关更多提示,请参阅此博文。 http://blog.jagregory.com/2006/04/12/how-to-use-clientids-in-javascript-without-the-ugliness/