【问题标题】:CSJS Not Updating Computed FieldCSJS 不更新计算字段
【发布时间】:2018-11-15 20:35:11
【问题描述】:

我很少使用 CSJS,但在这种情况下,我试图让它更新计算字段。虽然该字段的值已更新,以便我可以通过警报访问它,但我无法让它显示在 XPage 上。我尝试使用选中只读的可编辑字段,但数据也没有出现在 XPage 上。

我正在调用一个 CSJS 脚本块,我知道您需要刷新才能显示更改,但我已经在该字段周围放置了一个面板并尝试使用它和一个 div。既不产生错误消息,也不显示值。

我正在使用 XSP.partialRefreshGet("#{id:remaining}");在我设置值之后。我用 .partialRefreshPost 尝试过,它什么也没做,但后来我在 Stephan Wissel 的帖子“遇见 XSP 对象”中读到“......对于 POST,refreshId 必须指向一个表单......”而这个XPage 未附加到表单。我也尝试过使用参数 immediate:true。

我已经阅读了 Teresa Monahan 的文章“XPages 中的客户端 JavaScript 库”、Serdar Basegmez 的“您和每个 XPages 开发人员犯的 10 个错误”、我可以在网络上找到的任何内容,以及“掌握 XPages”一书。我知道这不应该那么困难,所以我相信我只是错过了一些东西(可能是愚蠢的)。

根据上述,XPage 和特定字段都没有绑定到任何表单。它位于选项卡式表格的第一个选项卡上,仅显示计算值。该值不需要保存在任何地方。

我通过在 dijit/form/ComboBox 选择中使用 onChange="Testing()" 在我的代理中调用该函数,因为我想要小框,并且在选择之后我不需要字段值.

这是脚本块中的简单文本:

function Testing(){
  XSP.getElementById("#{id:remainingPts}").value = "100";
  var rewards = XSP.getElementById("#{id:numOfRewards1}").value;
  alert("rewards:  " + rewards);
  XSP.partialRefreshGet("#{id:remaining}");
}

这是该字段的样子:

<xp:panel id="remaining">
   <xp:text escape="true" id="remainingPts" value="0">
   </xp:text>
</xp:panel>

我做错了什么?

【问题讨论】:

    标签: javascript xpages


    【解决方案1】:

    我认为xp:text 被呈现为&lt;span&gt; 标签,在这种情况下您需要设置.innerHtml() 而不是.value()。见How do I change the text of a span element in JavaScript。您无需刷新即可查看更改。

    【讨论】:

    • 你是个天才!非常感谢保罗!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 2017-05-12
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多