<asp:Button>在受jQuery影响的元素内时,事件不触发

3
我正在创建一个使用C#的ASP.NET日历应用程序。当用户单击某一天时,我使用了jQuery Popup Overlay,它将允许用户添加“约会”,并单击按钮在代码后台处理输入的信息。
弹出式覆盖层基本上隐藏了一个HTML元素,并在单击另一个元素时使其可见(通过上面链接可以找到很好的示例)。
代码:
<asp:Button ID="ButtonA" runat="server" OnClick="Button_Click" Text="Button A" />
<asp:Label ID="Label" runat="server" Text="Foo"></asp:Label>

<div id='slide'>        
    <div id="content">
        Content of the 'popup panel'
        <asp:Button ID="ButtonB" runat="server" OnClick="Button_Click" Text="Button B" />
    </div>
</div>

CodeBehind:

public void Button_Click(Object sender, EventArgs e)
{
    Label.Text = "Bar"; 
}

Javascript:

$(document).ready(function () {
    $('#slide').popup({
        //options
    });
});

我尝试将AutoPostBack="true"参数添加到按钮中,但没有任何区别(是否应该自动进行?)。 我还尝试在div元素中添加runat="server"参数,但这使问题变得更糟。
我很抱歉,我不了解问题的本质,无法提供更多信息。

slide 是否在 <form> 标签内? - Paul Abbott
先生,如果我注释掉JS,它可以按预期工作 - Skettenring
有没有JS错误?你能编辑你的问题,包括渲染后的按钮(在HTML中)吗? - Stinky Towel
没有JS错误。按钮呈现为:<input type="submit" name="ctl00$MainContent$ButtonB" value="Button B" id="MainContent_ButtonB" autopostback="true"> - Skettenring
1个回答

1
很可能是jQuery插件覆盖了按钮的行为。您可以使用提供的URL中的onclose回调来编写一个函数,如下所示:
function() {
    __doPostBack("ctl00$MainContent$ButtonB","");
}

如果不行的话,你可以在弹出框之外再放一个按钮,在弹出框关闭的 onclose 事件中手动执行 click() 事件,但这似乎有点像 hack!

问题已解决!谢谢 - 优雅的解决方案。 - Skettenring

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接