不同tabbedpanels上的计算字段

时间:2014-04-02 20:19:10

标签: javascript xpages

我有一个带有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调试工具栏工作....

1 个答案:

答案 0 :(得分:2)

如果要保存信息,则应使用document.getValue方法而不是get elementById 要么 您可以将信息保存为范围变量,然后使用范围变量而不是获取elementById。