jquery - DoPostback刷新页面但没有捕获事件处理程序

标签 jquery asp.net modal-dialog dopostback

首先,我应该提到,我花了一整天的时间进行搜索,但无法弄清楚我的代码出了什么问题以及为什么它不起作用......

我需要一个模式对话框来在我的代码中进行确认,所以我使用这个 jQuery 模式对话框:JQuery Confirm

我需要的是将此功能嵌入 <asp:Button> ...

我的问题是,当我单击按钮时,会弹出对话框,但“是/否”按钮不起作用,并且两者都会消失对话框。

我也使用下面的代码,但是 __doPostBack()根本没有做任何事情,但它完美地运行了简单的 js 代码,例如alert(''):

$("#complexConfirm").confirm({
     title: "Redirect confirmation",
     text: "This is very dangerous, you shouldn't do it! Are you really really sure?",
     confirm: function (button) {
         __doPostBack('complexConfirm', 'OnClick');
     },
     cancel: function (button) {
         return false;
     },
     confirmButton: "Yes",
     cancelButton: "No"
});

我搜索和对话框导致元素位于表单元素之外,因此我应该将其带回表单,但我不知道如何尝试下面的代码,但它没有

$("#editEventModal").parent().appendTo(jQuery("form:first"));

另一个问题是我尝试在没有对话框的情况下使用 javascript 事件回发,我使用 2 个按钮,一个用于调用 javascript,另一个用于调用该按钮,但是当我使用 __doPostBack 时,它会刷新页面,但不会出现我的按钮事件在代码隐藏中,我尝试了多种方法来调用按钮 onClick 事件,但它只是刷新页面,并没有调用我的 butoon OnClick Mehtod !!!

按钮声明如下:

<asp:Button ID="complexConfirm" ClientIDMode="Static" runat="server" OnClick="TestBTN_Click" Text="Test" />
<asp:Button ID="checkit" ClientIDMode="Static" runat="server" OnClientClick="__doPostBack('<%=complexConfirm.UniqueID%>', '');" Text="CHECK" />

这两个问题我该怎么办?

我搜索了很多,但没有一个解决方案适合我!

我将不胜感激任何解决方案,谢谢。

最佳答案

在不知道你的 asp:button 声明的情况下,这是我最好的猜测。

您需要使用按钮的唯一ID,即按钮的“名称”属性,而不是它的ID。

__doPostBack('<%=complexConfirm.UniqueID%>', '');

此外,由于它是一个按钮,因此您实际上不需要指定 OnClick

编辑:我创建了一个工作示例来演示我认为您想要完成的任务。您可以根据需要定制它以适应您的 jQuery 确认。

aspx:

<asp:Button ID="btnTest1" runat="server" Text="Test1" OnClick="btnTest1_Click" />

JavaScript:

<script>
    $('#<%=btnTest1.ClientID%>').confirm({
        text: "This is very dangerous, you shouldn't do it! Are you really really sure?",
        title: "Confirmation required",
        confirm: function (button) {
            // do something
            __doPostBack('<%= btnTest1.UniqueID%>', '');
        },
        cancel: function (button) {
            // do something
        },
        confirmButton: "Yes I am",
        cancelButton: "No",
        post: true
    });
</script>

后台代码:

protected void btnTest1_Click(object sender, EventArgs e)
{
    Response.Write("You clicked YES");
}

我认为部分问题是您的事件名称没有以按钮的名称命名。如果使用 autoEventWireup(我认为您是这样),那么您的事件将不会触发,因为它找不到具有匹配名称的事件。

所以,我做的第一件事就是消除 StaticClientID。您仍然可以将 jquery 与 asp.net 生成的 ID 一起使用。然后我确保该事件被命名为 btnTest1_Click 因为按钮的名称是 btnTest1

我不确定您为什么需要另一个按钮,因为您似乎要做的就是在按钮提交之前进行确认。

关于jquery - DoPostback刷新页面但没有捕获事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25041404/

相关文章:

c++ - 在不连接按钮的情况下手动关闭 Modal QDialog - 代码完成后对话框挂起

javascript - 如果其他脚本的加载顺序未知,我可以使用 noConflict() 限制我需要的 jQuery 版本的范围吗?

javascript - 同时运行两个独立的 jQuery

javascript - 调整窗口大小时刷新 Skrollr

c# - 如何在 webforms 中为用户控件创建自定义事件?

javascript - 在 IE8 中工作的居中模式

javascript - jQuery - 如何在 HTML 中移动结束标签

c# - Paypal 沙箱与 asp.net c# 集成

c# - 从单独的线程访问 ASP.NET 缓存?

javascript - Rails 部分模态(从不同模型渲染部分)