如何防止在打开对话框时显示工具提示

How to prevent tooltip from showing when dialog is opened

本文关键字:显示 工具提示 打开对话框 何防止      更新时间:2023-09-26

我必须遵循以下场景:

我的网站上有几个对话框(一些是静态的,一些是用 ajax 加载的内容创建的,一些是在页面加载后创建的)。

举个例子:

$(".agreementcount_dialog").dialog({
    position: {
        my: "center center",
        at: "center center"
    },
    draggable: true,
    resizable: true,
    modal: false,
    width: 250,
    height: 300,
    close: function () {
        $(this).dialog("close");
    }
});

包括 jQuery-UI tooltip

$('#main').tooltip();

每次打开对话框时,工具提示都会通过对话框关闭按钮上的autofocus触发。

演示

所以现在我的问题:如何防止打开对话框时显示工具提示?

我可以在工具提示

的初始化中设置一个选项,以便在将焦点设置在关闭按钮上时不会触发工具提示吗?这将是最好的解决方案,因为我只有一个地方调用工具提示,并且我必须更改某些内容。事实上,我不希望更改焦点,但不希望显示工具提示。

我知道可以使用:tabbaleautofocus属性来完成,但是还有另一种方法吗?我不想编辑项目中的所有对话框来添加新的自动对焦元素(然后打开后无法通过按 Enter 或转义关闭对话框),我想在对话框中保留工具提示的功能。

注意:并非每个对话框都会在点击事件中打开。

我找到了一个简单的解决方案来解决我的问题:

$('body').tooltip({ 
    items: ":not(.ui-dialog-titlebar-close)" 
});

这将从工具提示功能中排除对话框中的关闭按钮,而不会影响自动对焦。

现在关闭按钮没有工具提示,但其余部分不受影响。

这可以轻松扩展并处理 ajax 生成的内容。

试试这个:愿有帮助

$('.open').on('click', function(){
   $('.dialog').dialog('open');
   $(this).focus();
});

打开对话框后,您可能需要初始化工具提示,它可以解决问题,但我不确定这是最好的方法。

无论如何,这是演示。http://jsfiddle.net/utj47ty9/1/

 $(document).ready(function(){
   $('.dialog').dialog({autoOpen: false});
   $('.open').on('click', function(){
     $('.dialog').dialog('open');
     $('body').tooltip();
 });
 });