Confirm deletion in modal / dialog using Twitter Bootstrap? Confirm deletion in modal / dialog using Twitter Bootstrap? jquery jquery

Confirm deletion in modal / dialog using Twitter Bootstrap?


GET recipe

For this task you can use already available plugins and bootstrap extensions. Or you can make your own confirmation popup with just 3 lines of code. Check it out.

Say we have this links (note data-href instead of href) or buttons that we want to have delete confirmation for:

<a href="#" data-href="delete.php?id=23" data-toggle="modal" data-target="#confirm-delete">Delete record #23</a><button class="btn btn-default" data-href="/delete.php?id=54" data-toggle="modal" data-target="#confirm-delete">    Delete record #54</button>

Here #confirm-delete points to a modal popup div in your HTML. It should have an "OK" button configured like this:

<div class="modal fade" id="confirm-delete" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">    <div class="modal-dialog">        <div class="modal-content">            <div class="modal-header">                ...            </div>            <div class="modal-body">                ...            </div>            <div class="modal-footer">                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>                <a class="btn btn-danger btn-ok">Delete</a>            </div>        </div>    </div></div>

Now you only need this little javascript to make a delete action confirmable:

$('#confirm-delete').on('show.bs.modal', function(e) {    $(this).find('.btn-ok').attr('href', $(e.relatedTarget).data('href'));});

So on show.bs.modal event delete button href is set to URL with corresponding record id.

Demo: http://plnkr.co/edit/NePR0BQf3VmKtuMmhVR7?p=preview


POST recipe

I realize that in some cases there might be needed to perform POST or DELETE request rather then GET. It it still pretty simple without too much code. Take a look at the demo below with this approach:

// Bind click to OK button within popup$('#confirm-delete').on('click', '.btn-ok', function(e) {  var $modalDiv = $(e.delegateTarget);  var id = $(this).data('recordId');  $modalDiv.addClass('loading');  $.post('/api/record/' + id).then(function() {     $modalDiv.modal('hide').removeClass('loading');  });});// Bind to modal opening to set necessary data properties to be used to make request$('#confirm-delete').on('show.bs.modal', function(e) {  var data = $(e.relatedTarget).data();  $('.title', this).text(data.recordTitle);  $('.btn-ok', this).data('recordId', data.recordId);});