В событии close вы можете узнать, что произошло, посмотрев на параметр event (параметр 1).
Если диалоговое окно было закрыто нажатием [x] , тогда вы получите mouse-event fields.
Аналогично, если диалоговое окно было закрыто нажатием Escape , тогда вы получите клавиатурное событие поля.
Если диалоговое окно было закрыто программно, то ни одно из вышеперечисленного не применимо.
Итак, хорошее место для начала - посмотреть на event.which . Закрытие с помощью [x] будет означать, что вы получите значение кнопки мыши (от 1 до 3), а закрытие с помощью Escape будет означать, что вы получите код клавиши (27). Закрытие программно означает событие, которое будет неопределенным.
Теперь вернемся к вашему вопросу ...
Вы хотите сделать одну вещь, если они нажмут кнопку «Создать» - это просто, просто вставьте это в функцию для этой кнопки.
Вы хотите сделать что-то еще на [x], Escape или нажав Cancel. Создайте функцию с именем cancelled () (или как угодно), а затем вызовите эту функцию на кнопке Cancel и вызовите ее в событии закрытия , если event.which имеет значение .
Как то так ...
buttons: {
'Create': function() {
// do your stuff here
$(this).dialog('close');
},
Cancel: function() {
cancelled();
$(this).dialog('close');
}
},
close: function(event) {
if (event.which) {
cancelled();
}
}
Я думаю, что это покрывает то, что вам нужно, и это избавляет от необходимости возиться с созданием переменной, чтобы отслеживать, где вы были.