当用户打开对话框时,有一堆必须处理的 ajax 请求,因此我有第二个对话框,它只显示加载信息并在处理完所有请求后关闭。
一旦打开,我无法使用 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()
and .trigger('event')
?
谢谢 :)