我有一个带有3个标签的标签面板。
第一个是字段;
名字 名字 MI
在第二个标签上是TaxPayer字段,它是通过连接上面的字符计算的。
LastName +"," + FirstName +" " + MI
只是对姓氏进行编码(确保在我说得漂亮之前有效。)我在LastName字段中执行onChange事件;
var LastName = XSP.getElementById("#{id:TLast}").value;
XSP.getElementById("#{id:Taxpayer}").innerHTML = LastName
结果不会发送到第二个标签上的计算TaxPayer字段。
查看第一个标签中生成的源HTML,我看不到第二个标签,所以我的猜测是,当我尝试在第二个标签上更改某些内容时,它就不存在了。
有办法做到这一点吗?
[编辑] - 我发现了另一种方法。而不是"推动"从每个字段到我的FInvoiceDoc的值,我只是去了第二个面板上的计算字段并得到了它的值;
<xp:text escape="true" id="TaxpayerDsp"
style="color:rgb(0,0,0)">
<xp:this.value><![CDATA[#{javascript:
var lastName = currentDocument.getValue("TLast");
var firstName = currentDocument.getValue("TFirst");
var mI = currentDocument.getValue("TMI");
var taxPayer = lastName + ", " + firstName + " " + mI;
taxPayer.trim()}]]></xp:this.value>
</xp:text>
现在我根本不用担心文件刷新。我还包括一个隐藏字段,它将更新后端文档;
<xp:inputText
id="TaxPayerDoc"
value="#{FInvoiceDoc.TaxPayer}"
styleClass="xspHiddenFields">
</xp:inputText>
xspHiddenFields在我的CCS样式表中为;
.xspHiddenFields {color:rgb(255,0,0);width:98.0px}
然后我从TLast,TFirst和TMI字段进行函数调用以更新此值;
function updateTaxpayer() {
// called from the onChange events of TLast, TFirst, and TMI.
var TLast = XSP.getElementById("#{id:TLast}").value;
var TFirst = XSP.getElementById("#{id:TFirst}").value;
var TMI = XSP.getElementById("#{id:TMI}").value;
var TaxPayer = TLast + ", " + TFirst + " " + TMI;
XSP.getElementById("#{id:TaxPayerDoc}").value = TaxPayer;
}
这可能是以下答案首先意味着什么。我可能误解了它。无论如何,它让我意识到currentDocument的乐趣。现在我只需要让服务器端的xPage调试工具栏工作....
答案 0 :(得分:2)
如果要保存信息,则应使用document.getValue方法而不是get elementById 要么 您可以将信息保存为范围变量,然后使用范围变量而不是获取elementById。