我使用fancybox在单击链接时显示div的内容。此操作使用以下代码:
<a id="popupTrigger" href="#popup">popup trigger</a>
<div style="display:none">
<div id="popup">
<asp:UpdatePanel ID="HerkomstCodeUpdatePanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
This content displays inside fancybox.
<asp:TextBox ID="CurrentTimeTextBox" runat="server"></asp:TextBox>
<asp:Button ID="RefreshContentButton" runat="server"></asp:Button>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
以及JScript:
$(document).ready(function () {
$("#popupTrigger").fancybox({
autoDimensions: false,
height: 250,
transitionIn: 'elastic',
transitionOut: 'elastic',
width: 400
});
});
现在我希望它会做的是,当你点击按钮(显示在fancybox中)它会更新文本框,并做我在代码隐藏中定义的任何事情。不幸的是,当我点击按钮时什么也没有发生。
问题是,如果我删除fancybox,updatepanel将按预期工作。所以我想如果在创建fancybox之前我能找出按钮后面的eventhandler逻辑,那么在附加fancybox之后,我也许能重新创建eventhandler逻辑?我就是哪儿也找不到。。。
我正在使用ASP.Net WebForms 3.5和JQuery 1.4.1
我用下面的代码覆盖了按钮上的clientside click事件,从而触发了codeboond按钮点击事件。关键在于使用按钮的名称作为“doPostBack”事件的发送者对象。剩下的唯一问题是,所有其他值都不再回发。如果我在文本框中键入任何内容,单击该按钮,我的代码隐藏将不再知道文本框中的内容。
$("#popupTrigger").fancybox({
//.... other options,
onComplete: function () {
$("#RefreshContentButton").click(function () {
__doPostBack($(this).attr('name'), '');
});
}
});