代码之家  ›  专栏  ›  技术社区  ›  M4N

使用jquery ui dialog作为带有ASP:LinkButton的确认对话框(如何调用postbck)

  •  2
  • M4N  · 技术社区  · 14 年前

    我想使用jQuery UI的对话框来实现一个确认对话框,当用户单击一个delete链接(使用 asp:LinkButton
    我使用的代码如下所示(从jquery ui文档中复制):

    <!-- the delete link -->
    <asp:LinkButton ID="btnDelete" runat="server" Text="Delete"
      OnClick="btnDelete_Click" CssClass="btnDelete"></asp:LinkButton>
    
    <!-- the confirm-dialog -->
    <div id="dialog-confirm-delete" title="Delete?" style="display:none;">
      <p>Are you sure you want to permanently deleted the selected items?</p>
    </div>
    
    <script>
    $(document).ready(function () {
        // setup the dialog
        $('#dialog-confirm-delete').dialog({
            autoOpen: false,
            modal: true,
            buttons: {
              "Delete all items": function () {
                     $(this).dialog("close");
                     // ===>>> how to invoke the default action here
                  },
              Cancel: function () { $(this).dialog("close"); }
            }
        });
    
        // display the dialog
        $('.btnDelete').click(function () {
            $('#dialog-confirm-cancel').dialog('open');
            // return false to prevent the default action (postback)
            return false;
        });
    
    });
    </script>
    

    click 事件处理程序,我必须阻止 LinkButton (回发)并显示对话框。

    7 回复  |  直到 13 年前
        1
  •  6
  •   M4N    14 年前

    好吧,我的方法是这样的(它有效,但可能不是最好的解决方案):

    $(document).ready(function () {
      $('#dialog-confirm-cancel').dialog({
        autoOpen: false,
        modal: true,
        buttons: {
          "Delete all items": function () {
            // invoke the href (postback) of the linkbutton,
            // that triggered the confirm-dialog
            eval($(this).dialog('option', 'onOk'));
            $(this).dialog("close");
          },
          Cancel: function () { $(this).dialog("close"); }
        }
      });
    
      $('.btnDelete').click(function () {
        $('#dialog-confirm-delete')
          // pass the value of the LinkButton's href to the dialog
          .dialog('option', 'onOk', $(this).attr('href'))
          .dialog('open');
        // prevent the default action, e.g., following a link
        return false;
      });
    });
    
        2
  •  1
  •   Justin Soliz    14 年前

    如果您所做的只是确认您可以向按钮添加属性。

    <asp:LinkButton ID="btnDelete" runat="server" Text="Delete"
      OnClientClick="if(!confirm('Are you sure?'))return false;" CssClass="btnDelete"></asp:LinkButton>
    
        3
  •  0
  •   Lorenzo OnoSendai    14 年前
        4
  •  0
  •   skndstry    14 年前

    所以你阻止了链接的默认操作(在链接之后),对吧?所以添加 location.replace('path/to/file'); 之后 $(this).dialog('close'); 会解决你的问题。

        5
  •  0
  •   Richard Marskell - Drackir Sunil Tandon    14 年前

    尝试添加 $("#yourformid").submit(); // ===>>> how to invoke the default action here . 根据 docs

    编辑

    $('.btnDelete').click(function (event, confirmed) {
        if (confirmed) {
            return true;
        } else {
            $('#dialog-confirm-cancel').dialog('open');
            // prevent the default action, e.g., following a link
            return false;
        }
    });

    然后在“删除所有项目”功能中:

    "Delete all items": function () {
        $(this).dialog("close");
        $('.btnDelete').trigger("click", [true]);
    },
        6
  •  0
  •   Erwin    12 年前
    $('#dialog-confirm-delete').dialog({
       autoOpen: false,
       modal: true,
       buttons: {
           Cancel: function() {
               $(this).dialog("close");
           },
           "Delete all items": function() {
               $(this).dialog("close");
               // ===>>> how to invoke the default action here
           }
       }
    });
    
        7
  •  0
  •   Mike    9 年前

    如果使用的是链接按钮,则可以执行以下操作: