9

I have a jQuery dialog and I need to execute some_code() when I press Esc or click the Cancel button. The latter is easy to implement, I just add define a property of the buttons object:

$('#mydialog').dialog({

  closeOnEscape: true,

  close: function(event, ui) {
    //some_code();
    $(this).dialog('destroy')
  },

  buttons: {
    "OK": function() {
      $(this).dialog("close");
    },
    "Cancel": function() {
      some_code();
      $(this).dialog("close");
    }
  }
});

But how can I execute some_code() after pressing Esc? This function must not be called clicking the OK button, so I cannot simply place it in the close event.

0

1 Answer 1

13
+500

After googling around without finding an answer, I started looking into close: function(event, ui) part and found the solution using event.originalEvent (JSFiddle):

close: function(event, ui) {
  // some_code();
  if (event.originalEvent) {
    // triggered by clicking on dialog box X or pressing ESC
    // not triggered if a dialog button was clicked
    some_code();
  }
  $(this).dialog('destroy')
}
0

Not the answer you're looking for? Browse other questions tagged or ask your own question.