除了服务器端回调之外,如何调用javascript函数?
我有一些这样的标记:除了服务器端回调之外,如何调用javascript函数?,javascript,jquery,asp.net,updatepanel,Javascript,Jquery,Asp.net,Updatepanel,我有一些这样的标记: <form id="ddlSelections" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" /> <asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="true" UpdateMode=
<form id="ddlSelections" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="DDL3" EventName="SelectedIndexChanged" />
</Triggers>
<ContentTemplate>
<asp:DropDownList ID="DDL3" OnSelectedIndexChanged="testFunc" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
<div id="placeholder"></div>
但是jQuery没有捕捉到这些事件。我猜这是因为ASP可能过度编写了事件处理程序
有没有办法做到这一点
编辑:渲染的内容:
<select id="DDL3" onchange="javascript:setTimeout('__doPostBack(\'DDL3\',\'\')', 0)" name="DDL3">
由于它是一个ASP.NET控件,您需要通过
客户端ID来引用它:
以下是测试用例:
<asp:UpdatePanel ID="pnl" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DDL3" runat="server">
<asp:ListItem Text="Test" Value="1"></asp:ListItem>
<asp:ListItem Text="Test 2" Value="2"></asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
<div id="placeholder">I'm here</div>
您的“问题”是或--,之后您可以按原样绑定:
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function () {
$('#<%= DDL3.ClientID %>').click(function () {
alert("Clicked " + $(this).val();
});
});
$(“#DDL3”).change(){}
不是有效的JavaScript。你能发布一些具体的尝试吗?对不起!使用实际代码更新。作为参考,您不需要(或者确实需要)事件处理程序中的javascript:
。它之所以“有效”,是因为它被解析为一个标签,但它没有任何用途<代码>javascript:
是一种URL方案,仅在链接目标中有用。谢谢。它仍然不起作用。当我检查呈现页面的HTML源代码时,它仍然替换我使用的ID。您还有什么建议吗?您的意思是它仍然使用DDL3
而不是完整的ID吗?是的。此外,我还更新了我的问题,添加了您的建议后得到了什么效果。您是否将clientdmode
设置为Static
任何位置?实际上没有。我没有修改该设置。我目前正在研究这个问题:也许这与我的处境有关。我会在同一时间试试这个。+1好的live
一个成功了!我会接受这个答案,因为它不需要任何ASP特定的黑客,而且解释对我非常有帮助。谢谢大家!@图例:如果将DropDownList放在实现InAdminContainer
中的的控件内,则此操作将不起作用。您需要使用ClientID
,这就是我建议使用它的原因。无论控件在页面中的位置如何,ClientID
方法都会起作用。@JamesJohnson(如果可用)可以解决这个问题,但当然ClientID
不太容易出错。很高兴看到有人还没有使用它,所以我留下了它。:)
$(function() {
$("#<%=DDL3.ClientID%>").change(function(e) {
$("#placeholder").html("Hello world!");
});
});
$(function() {
$("#<%=DDL3.ClientID%> option").click(function() {
$("#placeholder").html("Hello world!");
});
});
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function () {
$('#<%= DDL3.ClientID %>').click(function () {
alert("Clicked " + $(this).val();
});
});
$('#<%= DDL3.ClientID %>').live('click', function () {
alert("Clicked " + $(this).val());
});