Xpages 无法弹出 dojo 工具提示对话框

Posted

技术标签:

【中文标题】Xpages 无法弹出 dojo 工具提示对话框【英文标题】:Xpages can't get dojo tooltip dialog box to pop up 【发布时间】:2014-05-16 17:28:40 【问题描述】:

我有一个 dojoFilteringSelect 字段,我想为其添加一个 dojo 工具提示。如果用户将鼠标悬停在字段上(或者我可以在字段旁边放置一个图标),我希望显示计算字段的内容。

环顾四周,看到各种示例,但我找不到如何将工具提示连接到悬停动作?我在 Lotus 客户端中运行它。

我的代码如下。

                <xe:djFilteringSelect id="djFilteringSelect3"
                        rendered="true" value="#document1.loc" tabIndex="1">
                        <xe:this.defaultValue><![CDATA[""]]></xe:this.defaultValue>


        <xp:selectItems>
                <xp:this.value><![CDATA[#javascript:getComponent("lookupLocs").getValue();]]></xp:this.value>
            </xp:selectItems>

        <xp:eventHandler event="onClick" submit="false">
            <xe:this.script><![CDATA[XSP.openTooltipDialog("#id:tooltipDialog1", "#id:label1")]]></xe:this.script>
        </xp:eventHandler></xe:djFilteringSelect>
                    &#160;&#160;
                    <xe:valuePicker dialogTitle="Locs with Loc Manager"
                        for="djFilteringSelect1">

                        <xe:this.dataProvider>
                            <xe:simpleValuePicker>

                                <xe:this.valueList><![CDATA[#javascript:getComponent("lookupLocs2").getValue();]]></xe:this.valueList>
                            </xe:simpleValuePicker>
                        </xe:this.dataProvider>
                    </xe:valuePicker>
                    <xe:tooltipDialog id="tooltipDialog1"></xe:tooltipDialog></xp:td>

                <xp:scriptBlock id="scriptBlock1">
                    <xp:this.value><![CDATA[XSP.addOnLoad(function()
          XSP.getElementById("#id:djFilteringSelect1").focus();
        );]]></xp:this.value>
                </xp:scriptBlock>


                <xp:td style="width:229.0px">
                    <xp:message id="message1" for="loc"></xp:message>
                </xp:td>
            </xp:tr>
            <xp:tr>
                <xp:td>
                    <xp:label id="label3" value="Work Category" style="font-weight:bold"></xp:label>
                </xp:td>
                <xp:td>




                    <xe:djFilteringSelect id="djFilteringSelect2"
                        rendered="true" value="#document1.workCategory" tabIndex="2">
                        <xe:this.defaultValue><![CDATA[""]]></xe:this.defaultValue>


                        <xp:selectItems>
                            <xp:this.value><![CDATA[#javascript:var db = new Array(@DbName()[0], 'TSCTT.nsf'); 
    @DbColumn(db, "workCategoryView", 1)
    ]]></xp:this.value>
                        </xp:selectItems>



                    </xe:djFilteringSelect>

【问题讨论】:

【参考方案1】:

您非常接近您正在寻找的解决方案。

在 dojoFilteringSelect 字段本身上设置悬停工具提示功能并不是很有用,因为这样就不可能在那里选择一个值。相反,就像您已经建议的那样,让工具提示在图标或字段标签上起作用。

这是一个在将鼠标悬停在标签上时出现的工具提示对话框的示例:

<xp:label value="Label" id="label1">
    <xp:eventHandler event="onmouseover" submit="false">
        <xp:this.script><![CDATA[
            XSP.openTooltipDialog("#id:tooltipDialog1", "#id:label1")
        ]]></xp:this.script>
    </xp:eventHandler>
    <xp:eventHandler event="onmouseout" submit="false">
        <xp:this.script><![CDATA[
            XSP.closeTooltipDialog("#id:tooltipDialog1")
        ]]></xp:this.script>
    </xp:eventHandler>
</xp:label>
<xe:djFilteringSelect id="djFilteringSelect1" rendered="true" 
    value="#document1.loc">
    <xp:selectItems>
        <xp:this.value><![CDATA[#javascript:
            ["abc","def","xyz"]
        ]]></xp:this.value>
    </xp:selectItems>
</xe:djFilteringSelect>
<xe:tooltipDialog id="tooltipDialog1" title="This is the dialog title">
    <xp:text escape="true" id="computedField1">
        <xp:this.value><![CDATA[#javascript:
            "This is the computed value"
        ]]></xp:this.value>
    </xp:text>
</xe:tooltipDialog>

标签的事件“onmouseover”(不是“onMouseOver”!)打开工具提示对话框。此事件仅在您使用参数for="djFilteringSelect1" 时有效(我不知道为什么)。

我添加了一个事件“onmouseout”,当鼠标不再悬停在标签上时,它会关闭工具提示对话框。

您可以将相同的 CSJS 代码添加到工具提示对话框内的关闭按钮,而不是事件“onmouseout”。如果您想在工具提示对话框中单击链接或可编辑字段等内容,这将非常有用。

【讨论】:

这太棒了。我现在明白了很多。我能够完全按照我的意愿工作。非常感谢。【参考方案2】:

如果您使用工具提示而不是工具提示对话框,而不仅仅是使用 for 属性,它将自动发生,无需代码。很简单。

在您上面的代码中,您使用的是 onclick 事件,这在 onMouseOver 上不起作用(这将是您需要的事件?)

霍华德

【讨论】:

你指的是什么工具提示?

以上是关于Xpages 无法弹出 dojo 工具提示对话框的主要内容,如果未能解决你的问题,请参考以下文章

我的 IBM Domino xPages 应用程序中的 dojo.js 导致某些 JS 库无法工作

如何从XPages / dojo中的“超时超时”中恢复

具有Xpages / dojo的Highcharts 7.0.3

XPages - Dojo 验证文本框 - 自定义消息

如何更改xpages中dojo货币文本框的特征?

通过 XPages 中的 CSS 更改 Dojo 过滤选择的大小