javascript - CSJS 不更新计算字段
问题描述
我很少使用 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>
我做错了什么?
解决方案
我认为xp:text
呈现为<span>
标签,在这种情况下您需要设置.innerHtml()
而不是.value()
. 请参阅如何在 JavaScript 中更改 span 元素的文本。您无需刷新即可查看更改。
推荐阅读
- java - 试图创建一个输出所有可能的字母 AD 组合的程序
- java - 为什么 Spring State Machine PersistStateChangeListener 组件有时不在同一线程中执行?
- javascript - reactcodesandbox 不同行为输入不失焦点
- regex - 正则表达式查找不在列表中的单词
- matlab - MATLAB:如何关闭“哔”声?
- reactjs - 每次间隔自动从 api 更新 firebase 数据库
- java - 即使在设置 System.setErr() 后也无法使用自定义 PrintStream 进行打印的错误
- javascript - 寻找一种更短更有效的方法来添加(可能)重复到字符串末尾的内容
- powershell - 将 DataRow 类型转换为 Version 并遍历版本列表
- python - 无法使用 Python 3.8 安装 numpy “找不到满足 numpy 要求的版本”