如果我有一个自定义ASP.NET控件呈现为带有ID的html控件,我正在尝试使用jQuery将属性添加到输入控件。
但是,我遇到了一些问题:
首先,我的jQuery无法选择它。
我到目前为止:
$(document).ready(function() {
$(client id of the input control).attr('onclick', function () { alert('hey!'); });
});
似乎jQuery试图找到输入控件但不能。
有什么想法吗?
更新
通常情况下,所提供的解决方案可行,但由于这是一个SharePoint Publishing .aspx页面,因此不允许使用代码块...尝试其他解决方法。
答案 0 :(得分:5)
只需在jQuery中连接click事件。
$(document).ready(function() {
$(id of the input control)click(function() {
alert('hey!');
});
});
另外,请确保您不只是将您键入的ID放入jQuery中的控件中。 ASP.Net使用与给定控件不同的ID来呈现控件。在我运行的其中一个网站上,我有以下按钮:
<asp:Button ID="btnSignup" runat="server" Text="Sign Up" />
呈现的HTML中的ID不是btnSignup,它实际上呈现为ctl00_cpLeft_btnSignup。要使用jQuery选择该控件,您可以执行以下操作:
$("input[id$='btnSignup'").click(function() { ... });
修改强>
$("input[id$='btnSignup'}").click(function() { ... });
您也可以选择使用:
$("#<%= btnSignup.ClientID %>").click(function() { ... });
编辑:
我研究了使用&lt;%= ...%&gt;方法,你必须让你的javascript IN ASPX / ASCX文件本身才能工作。因此,我坚持使用正则表达式方法。
答案 1 :(得分:2)
您使用什么作为输入控件的ID?
您必须使用控件的ClientID,而不是ID。
答案 2 :(得分:2)
您需要使用其ClientID。如果您的ASP.NET标记如下所示:
<uc:MyControl runat="server" ID="myControl1" />
您的jQuery选择器应如下所示:
$(document).ready(function() {
$("<%=myControl1.ClientID%>").attr('onclick', function () { alert('hey!'); });
});
答案 3 :(得分:1)
答案 4 :(得分:0)
您的ASP.NET控件是在母版页还是用户控件中? ASP.NET会在您的ID中添加一堆标识符,以确保它是唯一的。
HTML中出现的控件的ID是什么?
答案 5 :(得分:0)
如果要将呈现的HTML控件的ID设置为提供给ASP.NET控件的ID,则需要了解ASP.NET如何处理控件ID命名空间。实质上,嵌套在控件中的每个控件都需要始终保证唯一标识符。 ASP.NET通过获取分配给控件的ID并在其前面加上包含该控件的每个控件的ID来维护这一点。因此,页面上的控件将包含一系列id到页面本身的表单。
您不希望重新构建此客户端。相反,Control定义了ClientID,它将返回在客户端上呈现的控件的ID。将它嵌入到jQuery中,或嵌入到jQuery变量中,如果你将jQuery放在一个单独的脚本文件中,你的jQuery就可以看到了这个变量。你应该没问题。
答案 6 :(得分:0)
只是为了通知你, document.ready部分是不需要的,使用asp.net控件将id更改为与预期不同的内容, ct100 .... 在它的开头被抛出,所以这种方式将查找实际的id名称,即使asp.net在开头抛出受损的代码,因为它查找具有结束的ID的所有元素(*)使用指定的文本。
$(function() {
$("*[id$='idofcontrol']".click(function() { alert('hey!'); });
});
或转到视图源并复制id名称并将其粘贴到代码中,或者只使用css类选择器:
$(function() {
$('.myclassname').click(function() { alert('hey!'); });
});
答案 7 :(得分:0)
由于您提到了Sharepoint,因此您可能会对EndUserSharepoint专注于集成jQuery with Sharepoint的系列感兴趣。作者讨论了让jQuery操纵webparts。