How can I execute some code if jQuery dialog was closed on escape?
Asked Answered
R

1

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.

Reprisal answered 19/1, 2014 at 15:59 Comment(0)
R
13

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')
}
Reprisal answered 19/1, 2014 at 15:59 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.