如何禁用 xPage placeBar 按钮?

how to disable xPage placeBar button?

我有这样定义的放置栏按钮:

<xc:ccMain>
    <xc:this.placeBarActions>
        <xe:basicLeafNode label="Save" onClick="XSP.executeOnServer('#{id:saveEventHandler}','#{id:applicationLayout1}')">
        </xe:basicLeafNode>
        ..........

然后:

    <xp:eventHandler id="saveEventHandler" submit="true" event="calledbyid" refreshMode="complete" action="#{javascript:saveDocument();}"></xp:eventHandler>

我想禁用 "Save" 按钮 onClick 事件,尤其是客户端 JS

谢谢

我不使用 CSJS,这在我看来会使这项任务变得不必要的复杂,我会结合使用 SSJS 和部分刷新:

  1. 服务器端onclick事件设置了一个viewScope变量(requestScope可能不够)像

    viewScope("isDisabled", true)

  2. 同一事件对按钮周围的命名 xp:divxp:panel 执行部分刷新,甚至可能仅对命名 xp:button 本身

  3. 按钮已禁用 属性 以编程方式评估您的 viewScope 变量:

    disabled="#{javascript:viewScope("isDisabled")}"

应该可以解决问题。

您想在文档保存和页面重新加载期间禁用按钮 "Save"。

您的 basicLeafNode 是 placeBarActions 的子节点。
它被渲染到

<span class="lotusBtn">
    <a href="javascript:;" onclick="javascript:...">Save</a>
</span>

不幸的是,没有 属性 "disabled" 的 href 标签可以轻松禁用按钮。

'return false;' 覆盖按钮的 onclick 事件。当用户在执行期间第二次单击按钮时,它什么也不做。

将颜色设置为灰色以显示按钮在执行期间被禁用。您必须使用 color:gray !important 设置它,因为 OneUI 对 .lotusBtn a 的定义是 color: #000 !important,否则会否决灰色设置。

以这种方式更改您的代码

<xe:basicLeafNode
    label="Save"
    onClick="event.target.onclick= 'return false;';
             event.target.setAttribute('style', 'color:gray !important');
             XSP.executeOnServer('#{id:saveEventHandler}', '#{id:applicationLayout1}');">
</xe:basicLeafNode>

因为这个 basicLeafNode 是 applicationLayout1 的一部分,所以它会在页面重新加载后恢复到原来的内容。