【问题标题】:raising a confirm dialog via jQuery on asp:LinkButton click event通过 jQuery 在 asp:LinkBut​​ton 点击​​事件上引发确认对话框
【发布时间】:2009-08-19 02:43:42
【问题描述】:

考虑一个 ASP.NET webforms 应用程序,该应用程序要求在单击 asp:LinkButton 时引发确认对话框。确认对话框的结果应该允许或阻止 linkButton_click 方法的回发。

当前使用的插件/库是jquery.alerts.js(在ABeautifulSite 上找到)。

<script src="http://labs.abeautifulsite.net/projects/js/jquery/alerts/demo/jquery.js"
    type="text/javascript"></script>
<script src="http://labs.abeautifulsite.net/projects/js/jquery/alerts/demo/jquery.ui.draggable.js"
    type="text/javascript"></script>
<!-- Core files -->
<script src="http://labs.abeautifulsite.net/projects/js/jquery/alerts/demo/jquery.alerts.js"
    type="text/javascript"></script>
<link href="http://labs.abeautifulsite.net/projects/js/jquery/alerts/demo/jquery.alerts.css"
    rel="stylesheet" type="text/css"   />

     <asp:LinkButton runat="server" ID="lnkDisable" 
Text="Disable This Emp" onclick="lnkDisable_Click" />

<script type="text/javascript">
    $(document).ready(function() {

        $("#ctl00_mainContent_lnkDisable").click(function() {
            jConfirm('Please confirm this emp should be disabled?', 
                     'Confirm Disable', 
                     function(r) {
                                jAlert('Confirmed: ' + r, 'Results');
                });
            }); 
        });         
</script>

消息框正确触发!

问题 问题是它显示大约 2 秒,然后在用户可以在弹出窗口上进行选择之前回发页面。我已经在那个事件处理程序上设置了一个断点,并且确实页面被回发了。

问题 当用户下定决心并单击弹出窗口上的“确定”或“取消”按钮时,如何延迟回发?

欢迎对其他插件提出任何建议!

【问题讨论】:

    标签: asp.net jquery jquery-plugins webforms


    【解决方案1】:

    我想你会想要的:

    return jConfirm('Please confirm this emp should be disabled?', 
    

    (注意添加'return'语句)。

    但我不能 100% 确定“jConfirm”功能的工作原理。

    -- 编辑

    有可能(实际上很可能)该对话框不是模态的。看看你是否能弄清楚如何做到这一点(或者更有可能有人会回复)。

    虽然你可以使用典型的 JavaScript 确认...

    return confirm("Are you sure?");
    

    但我假设你想要漂亮的 :)

    -- 编辑

    鉴于它不能成为模态的,也许是这样的:

        var confirmed = false;
        $("#ctl00_mainContent_lnkDisable").click(function() {
            if( confirmed ){ return true; }
    
            jConfirm('Please confirm this emp should be disabled?', 
                     'Confirm Disable', 
                     function(r) {
                                jAlert('Confirmed: ' + r, 'Results');
                                confirmed = true;
                                #("ctl00_mainContent_lnkDisable").click();
                                confirmed = false;
                });
            });
    
            return false;
        });
    

    未经测试,相当愚蠢(我不确定调用 .click() 是否会再次触发该事件,因此是布尔值),但它应该工作。

    【讨论】:

    • 感谢 Silky...确实返回听起来合乎逻辑,并且可能是最终解决方案的一部分。然而,在这种情况下,它并没有阻止回发的发生。
    • pcampbell:有道理,我想您需要确定如何使该对话框成为模态。它可能是该函数中的一个选项/参数。
    • 快速浏览网站后,您似乎无法将它们设为模态。这有点烦人。那么你做什么有点复杂。我会更新主帖。
    • 如果网格视图中的“链接”按钮需要相同的内容怎么办
    【解决方案2】:

    我做了以下工作:

                var confirmed = false;
                $(".removeItemLink").click(function() {
                    if (confirmed) { return true; }
    
                    var clickedObj = $(this);
                    jConfirm('Are you sure you want to remove this item?',
                     'Confirm Removal',
                     function(r) {
                         if (r) {
                             confirmed = true;
                             clickedObj.click();
                             confirmed = false;
                         }
                     });
    
                    return confirmed;
                });
    

    @Silky - 谢谢。

    【讨论】:

    • @Krunal:谢谢你的回答。不幸的是,它对我不起作用。
    【解决方案3】:

    您可以使用 jquery 来“单击”一个隐藏按钮。也许是这样的?

    $(".removeItemLink").click(function() {
      var clickedObj = $(this);
      jConfirm('Are you sure you want to remove this item?',
        'Confirm Removal',
        function(r) {
          if (r) {
           clickedObj.parent().find(".hidden-button-with-event").click();
          }
      });
    });
    

    【讨论】:

      【解决方案4】:

      检查这个问题:

      Using jquery-ui dialog as a confirm dialog with an ASP:LinkButton (how to invoke the postbck)

      他正在使用 jQuery 标准对话框,但我很确定这也应该适用于此。

      【讨论】:

        猜你喜欢
        • 2011-05-07
        • 2014-04-26
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多