Когда пользователь открывает диалоговое окно, есть куча ajax-запросов, которые необходимо обработать, и поэтому у меня есть второе диалоговое окно, которое просто отображает информацию о загрузке и закрывается после того, как все запросы будут были обработаны.Диалоговое окно Jquery ui не закрывается клавишей `Escape`
Невозможно закрыть диалоговое окно пользователя с помощью клавиши Escape после его открытия. Я должен щелкнуть по самому диалогу, прежде чем я смогу использовать escape.
Я попробовал следующее, чтобы назначить открытое пользователем окно фокуса после закрытия диалогового окна загрузки, но безрезультатно, мне все же нужно щелкнуть по диалоговому окну, чтобы закрыть его с помощью клавиши эвакуации.
$(document).ajaxStart(function() {
// IF loading dialog is not allready being shown show it.
if ($("#LoadingData").dialog('isOpen') === false) {
$("#LoadingData").dialog('open');
}
});
$(document).ajaxStop(function() {
//Close the loading dialog once the requests have finished
$("#LoadingData").dialog('close');
//Find the user opened dialog
$('.cmdialog').each(function() {
if ($(this).dialog('isOpen')) {
$(this).trigger('click');//set focus to dialog
// have also replaced .trigger('click') with .focus() but to no avail
}
}).on('click', function() {
//if click is triggerd set the focus of the dialog.
if ($(this).prop('id') != 'LoadingData') {
$(this).focus();
}
});
});
Я также попытался установить фокус на первый элемент в диалоге с $('#DialogName:first-child').focus()
и $('#DialogName:first-child').trigger('click')
, но это тоже не работает.
Любые идеи относительно того, почему фокус не установлен? Или я недопонимаю/неправильно использую .focus()
и .trigger('event')
?
Спасибо :)
Попробуйте это [jqueryui] (http://jqueryui.com/dialog/#event-close) – Prateek