按下弹出按钮时,不要让弹出窗口关闭

时间:2014-01-13 22:12:16

标签: c# jquery asp.net

我正在使用我在此站点中找到的jquery弹出框来加载弹出div http://istockphp.com/jquery/creating-popup-div-with-jquery/。 我在弹出窗口中添加了一个按钮,用于执行一些C#代码。然而,当我点击该按钮时,弹出窗口关闭(但按钮后面的代码会激活),下次我重新打开弹出窗口时,我的激活代码就在那里。当我按下按钮时,我似乎无法弄清楚如何在不关闭的情况下重新加载弹出窗口。有任何想法吗?感谢

jQuery(function ($) {

$(".topopup").click(function () {
    loading(); // loading
    setTimeout(function () { // then show popup, deley in .5 second
        loadPopup(); // function show popup
    }, 500); // .5 second
 //   return false;
});

$("#Button2").click(function () {
    loading(); // loading
    setTimeout(function () { // then show popup, deley in .5 second
        loadPopup(); // function show popup
    }, 500); // .5 second
    //   return false;
});


/* event for close the popup */
$("div.close").hover(
                function () {
                    $('span.ecs_tooltip').show();
                },
                function () {
                    $('span.ecs_tooltip').hide();
                }
            );

$("div.close").click(function () {
    disablePopup();  // function close pop up
});

$(this).keyup(function (event) {
    if (event.which == 27) { // 27 is 'Ecs' in the keyboard
        disablePopup();  // function close pop up
    }
});

$("div#backgroundPopup").click(function () {
    disablePopup();  // function close pop up
});

$('a.livebox').click(function () {
    alert('Hello World!');
    return false;
});

$("#Button1").click(function() {
    $('html, body').animate({
        scrollTop: $(".topopup").offset().top
   }, 2000);
});

/************** start: functions. **************/
function loading() {
    $("div.loader").show();
}
function closeloading() {
    $("div.loader").fadeOut('normal');
}

var popupStatus = 0; // set value

function loadPopup() {
    if (popupStatus == 0) { // if value is 0, show popup
        closeloading(); // fadeout loading
        $("#toPopup").fadeIn(0500); // fadein popup div
        $("#backgroundPopup").css("opacity", "0.7"); // css opacity, supports IE7, IE8
        $("#backgroundPopup").fadeIn(0001);
        popupStatus = 1; // and set value to 1
    }
}

function disablePopup() {
    if (popupStatus == 1) { // if value is 1, close popup
        $("#toPopup").fadeOut("normal");
        $("#backgroundPopup").fadeOut("normal");
        popupStatus = 0;  // and set value to 0
    }
}
/************** end: functions. **************/
}); // jQuery End

背后的代码

    protected void Button2_Click(object sender, EventArgs e)
{
    //Doing my stuff

}

1 个答案:

答案 0 :(得分:1)

您似乎错过了基本表单和asp.net如何工作的观点。

如果您删除弹出窗口并使div可见,则您有一个基本表单可以发回服务器。完成服务器端处理后,将重新加载页面以进行任何必要的更改。

回到花哨的jquery中,你仍然在做同样的事情,回发到服务器并重新加载页面。

您有几个选择:

在处理表单时更改隐藏div的可见性状态。 我想说这是最简单的选择。将runat="server"添加到div以使其可用于后面的代码。然后,您可以在Button2_Click事件中更改div的类或样式。这种方法的问题在于,它将遍历整个页面的卸载,加载周期,这对用户是可见的。

使用更新面板 在div中添加update panel。这将导致部分页面回发,并且只更新div的内容,您不需要手动显示div。这种方法很容易实现。缺点是使用更新面板会产生相当大的开销。

页面方法或网络服务& jquery的 可能他是最复杂的实现,但在我的意见中,最好的方法是使用jquery的页面方法(或Web服务)。 This article为该方法提供了很好的介绍。如果你谷歌“asp.net页面方法”

,还有很多其他的例子