Есть ли способ ввести пользовательскую кнопку в заголовок/заголовок окна диалога jQuery UI? Я обычно подавляю кнопку закрытия. В то же время я использую много диалогов, и время от времени пользователям приходится обращаться к информации в другом диалоговом окне (журнале ошибок), когда они слышат звуковое оповещение. По существу, другой диалог доступен только тогда, когда текущий модальный диалог скрыт. Было бы удобно, если бы вы могли оставаться в ненавязчивой кнопке в строке заголовка диалога, чтобы пользователи, желающие это сделать, могли попытаться выяснить, что вызвало предупреждение об ошибках звука.
Положите это другим способом - можно ли захватить кнопку закрытия по умолчанию, изменить ее внешний вид, чувство и функцию? Поэтому вместо закрывающего окна он отображает, скажем, символ справки/вопроса, а при щелчке появляется другое диалоговое окно.
Почему так бывает, что это вполне возможно! Хотя, это немного хакерский...
В объекте диалога нет реальной возможности сделать это, но это можно сделать. Первым шагом является изменение класса кнопки закрытия при создании (как показано ниже). изменение класса.ui-dialog-titlebar-close span позволит вам добавить символ для закрытия (в данном случае значок справки)
$("#dlg").dialog({
create: function(event, ui) {
var widget = $(this).dialog("widget");
$(".ui-dialog-titlebar-close span", widget).removeClass("ui-icon-closethick").addClass("ui-icon-help");
}
});
Затем вы хотите, чтобы ваш диалог не закрывался, когда пользователь нажимает на него, поэтому вы можете переопределить параметр beforeClose. Это также делается при создании диалога, как показано ниже. Единственное, что требуется, это то, что метод должен возвращать false, что предотвратит закрытие диалогового окна.
$("#dlg").dialog({
...
beforeClose: function(){
return HelpDialog();
}
});
function HelpDialog(){
//Show your help dialog...
return false;
});
Я сделал JSFiddle для этого, чтобы показать это. Надеюсь, это то, что вы искали (или близко к нему)!
Заметка для всех, кто работает в этой теме. Вот мой захват функции закрытия окна
function hijackDialogCloseButton(hlp)
{
var tbc = $('.ui-dialog-titlebar-close:visible');
if (0 < tbc.length)
{
tbc = $(tbc[tbc.length - 1]);
tbc = tbc.find(">:first-child");
tbc.removeClass("ui-icon-closethick").addClass("ui-icon-help");
tbc.bind('click',function(){useHelp(hlp);return false;});
}
}
Несколько объяснений в порядке