5

I'm trying to stop the default action when a link is clicked. Then I ask for confirmation and if confirmed I want to continue the event. How do I do this? I can stop the event but can't start it. Here's what I have so far:

$(document).ready(function(){
  $(".del").click(function(event) {
    event.preventDefault();
    if (confirm('Are you sure to delete this?')) {
      if (event.isDefaultPrevented()) {
        //let the event fire. how?
      }
    }
  });
});
cletus
  • 616,129
  • 168
  • 910
  • 942
vagabond
  • 1,717
  • 4
  • 19
  • 21

2 Answers2

4

There's no need to prevent default to start. Just do this:

$(function() {
  $(".del").click(function(evt) {
    if (!confirm("Are you sure you want to delete this?")) {
      evt.preventDefault();
    }
  });
});

It's easier and more logical to prevent the event once you need to rather than preventing it and then un-preventing it (if that's even possible).

Remember that the code will stop running when the confirm box is presented to the user until the user selects OK or Cancel.

By the way, take a look at JavaScript: event.preventDefault() vs return false. Depending on if you want to stop the event propagation or not you may want to either call stopPropagation() or return false:

$(function() {
  $(".del").click(function(evt) {
    if (!confirm("Are you sure you want to delete this?")) {
      return false;
    }
  });
});
Community
  • 1
  • 1
cletus
  • 616,129
  • 168
  • 910
  • 942
2

Much better to just return the confirm()

$(function() {
  $(".del").click(function() {
    return confirm("Are you sure you want to delete this?");
  });
});
Reigel Gallarde
  • 64,198
  • 21
  • 121
  • 139