XPages 中的 DatePicker 可以为编辑框禁用,但不能为选择器按钮禁用

DatePicker in XPages can be disabled for editbox but can't be done for the picker button

我可以使用 javascript 的 disabled="true" 动态禁用 XPages 中的 DatePicker。 但是,它仅对编辑框禁用,而不对选择器按钮禁用。该按钮仍然有效。

我怎样才能同时禁用该按钮?

    <xp:inputText id="date1"
        defaultValue="#{javascript:@Today()}">
        <xp:dateTimeHelper id="dateTimeHelper1"></xp:dateTimeHelper>
        <xp:this.converter>
            <xp:convertDateTime type="date"
                dateStyle="full">
            </xp:convertDateTime>
        </xp:this.converter>
    </xp:inputText>

禁用时,

document.getElementById("#{id:date1}").disabled="true";

启用时,

document.getElementById("#{id:date1}").disabled="";

最安全的方法是在服务器端禁用组件。

<xp:button value="disable" id="button1">
    <xp:eventHandler event="onclick" submit="true"
        refreshMode="partial" refreshId="date1">
        <xp:this.action><![CDATA[#{javascript:viewScope.datedisabled = true}]]></xp:this.action>
    </xp:eventHandler>
</xp:button>
<xp:button value="enable" id="button2">
    <xp:eventHandler event="onclick" submit="true"
        refreshMode="partial" refreshId="date1">
        <xp:this.action><![CDATA[#{javascript:viewScope.datedisabled = false}]]></xp:this.action>
    </xp:eventHandler>
</xp:button>
<xp:inputText id="date1" defaultValue="#{javascript:@Today()}"
    disabled="#{viewScope.datedisabled}">
    <xp:dateTimeHelper id="dateTimeHelper2"></xp:dateTimeHelper>
    <xp:this.converter>
        <xp:convertDateTime type="date" dateStyle="full">
        </xp:convertDateTime>
    </xp:this.converter>
</xp:inputText>

它包括:输入字段和日期按钮。无论依赖于主题的组件如何呈现,它都将始终有效。

您仍然可以尝试使用客户端 JavaScript 代码来完成它,但我不推荐它,除非您确定您永远不会更改应用程序的主题。