【问题标题】:xhow to create a confirm delete dialog box with bootstrap framework? [duplicate]如何使用引导框架创建确认删除对话框? [复制]
【发布时间】:2012-09-28 09:35:15
【问题描述】:

可能重复:
Confirm delete modal/dialog with Twitter bootstrap?

如何使用 twitter 的 boostrap 框架创建确认删除对话框?

我有一个链接可以在后端对对象进行 ajax 删除,但我想确保用户在我发送请求之前确认他们要删除。

我在前端使用 jQuery,在后端使用 node.js/express。

jQuery 代码如下所示:

$("a.remove").click(function(e){
  e.preventDefault();

  $.ajax({
    url: '/api/item/'+itemId,
    type: 'DELETE',
    success: function(d){
      if ( d.status == 'success' ) {
        app.msg({ type: 'info', msg: d.message, before: "#items" });
        $("#item_"+itemId).fadeOut();
        app.log('deleted');
      } else {
        app.msg({ type: 'error', msg: d.message, before: "#items" });
        app.log('failed');
      }
    }
  });
});

我想注入一个漂亮的确认框。

【问题讨论】:

    标签: jquery css node.js twitter-bootstrap


    【解决方案1】:

    请检查:

    http://bootboxjs.com/

    【讨论】:

      【解决方案2】:

      Bootbox.js 是最好的选择。除此之外,您可以查看this plugin。此插件可用于锚点,在重定向到链接之前显示确认弹出窗口。

      (function($){
          $.fn.extend({
              confirmDialog: function(options) {
                  var defaults = {
                      message: '<strong>Are you sure</strong>',               
                      dialog: '<div id="confirm-dialog" class="popover">' +
                                  '<div class="arrow"></div>' +
                                  '<div class="inner">' +
                                      '<div class="content">' +
                                          '<p class="message"></p>' +
                                          '<p class="button-group"><a href="#" class="btn small danger"></a><a href="#" class="btn small"></a></p>' +
                                      '</div>' +
                                  '</div>' +
                              '</div>',
                      cancelButton: 'Cancel'
                  };
                  var options =  $.extend(defaults, options);
      
                  return this.each(function() {
                      var o = options;
                      var $elem = $(this)
      
                      //is there an existing click handler registered
                      if ($elem.data('events') && $elem.data('events').click) {
                          //save the handler (TODO: assumes only one)
                          var targetClickFun = $elem.data('events').click[0].handler;
                          //unbind it to prevent it firing
                          $elem.unbind('click');
                      }else{
                          //assume there is a href attribute to redirect to
                          var targetClickFun = function() {window.location.href = $elem.attr('href');};
                      }
      
                      $elem.bind('click', function(e) {
                          e.preventDefault();
                          if(!$('#confirm-dialog').length) {
      
                              var offset = $elem.offset();
                              var $dialog = $(o.dialog).appendTo('body');
      
                              var x;
                              if(offset.left > $dialog.width()) {
                                  //dialog can be left
                                  x = e.pageX - $dialog.width();
                                  $dialog.addClass('left');
                              } else {
                                  x = e.pageX;
                                  $dialog.addClass('right');
                              }
                              var y = e.pageY - $dialog.height() / 2 - $elem.innerHeight() / 2;
      
                              $dialog.css({
                                  display: 'block',
                                  position: 'absolute',
                                  top: y,
                                  left: x
                              });
      
                              $dialog.find('p.button-group').css({
                                  marginTop: '5px',
                                  textAlign: 'right'
                              });
      
                              $dialog.find('a.btn').css({
                                  marginLeft: '3px'
                              });
      
                              $dialog.find('p.message').html(o.message);
      
                              $dialog.find('a.btn:eq(0)').text($elem.text()).bind('click', function(e) {
                                  $dialog.remove();
                                  targetClickFun();
                              });
      
                              $dialog.find('a.btn:eq(1)').text(o.cancelButton).bind('click', function(e) {
                                  $dialog.remove();
                              });
      
                              $dialog.bind('mouseleave', function() {
                                  $dialog.fadeOut('slow', function() {
                                      $dialog.remove();
                                  });
                              });
                          }
                      });
                  });
              }
          });   
      })(jQuery);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 2016-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-16
        • 2017-12-20
        相关资源
        最近更新 更多