Грубый, но эффективный способ сделать эту работу более общей:
$.fn.dlg = function(options) {
return this.each(function() {
$(this).dialog(options);
$(this).keyup(function(e){
if (e.keyCode == 13) {
$('.ui-dialog').find('button:first').trigger('click');
}
});
});
}
Затем, когда вы создаете новый диалог, вы можете сделать это:
$('#a-dialog').mydlg({...options...})
И после этого используйте его как обычный диалог jquery:
$('#a-dialog').dialog('close')
Есть способы улучшить это, чтобы заставить его работать в более особых случаях. С помощью приведенного выше кода он автоматически выберет первую кнопку в диалоге в качестве кнопки, которая будет срабатывать при нажатии Enter. Также предполагается, что в любой момент времени существует только один активный диалог, что может быть не так. Но вы поняли.
Примечание. Как упомянуто выше, нажатие кнопки ввода зависит от ваших настроек. Таким образом, в некоторых случаях вы можете использовать селектор: first в методе .find, а в других вы можете использовать селектор: last.