LiveCycle - 根据选中的复选框和输入字段进行多次计算?

时间:2015-09-19 08:27:48

标签: javascript livecycle-designer

在LiveCycle中使用FormCalc执行表单。作为表格的一部分,我有2个复选框(cbPhoto)& (cbCert)和2个数字字段(numPages)和(numResults)。

我想要实现的是当选中一个或两个复选框并输入一个数字(numPages)然后进行以下计算并在(numResults)中显示结果。

计算: 如果选择(cbPhoto)并说例如输入5(numPages),我希望计算第一页为20美元,之后每页为1美元(因此在这种情况下结果为24美元)。

如果选择了(cbCert)并且说例如输入了5(numPages)我希望第一页的计算结果为22美元,之后每页计算结果为2美元(因此在这种情况下结果为30美元)。

如果同时选中了两个复选框,并说例如输入了5(numPages),我想要运行上述两个计算(结果为54美元)。

我希望(numResults)保持空白,直到将数字放入(numPages)后,无论是否选中了复选框。

我使用以下代码取得了非常有限的成功,并且如果能够使用JavaScript,我将很乐意使用JavaScript。

A9.#subform[0].A4::calculate - (FormCalc, client)
if (cbP3==1) and (cbC3==1) then
P1-1+20
and
(P1-1)*2+22
else ""
endif 

非常感谢任何和所有帮助。干杯

1 个答案:

答案 0 :(得分:0)

这是我的JavaScript解决方案。只要其他3个字段中的任何一个字段发生变化,numResults的“calculate”事件就会执行。当numPages有一个值且至少选中一个复选框时,将显示非空白结果。

form1。#subform [0] .cbCert :: change - (JavaScript,client)

numResults.execCalculate();

form1。#subform [0] .cbPhoto :: change - (JavaScript,client)

numResults.execCalculate();

form1。#subform [0] .numPages :: change - (JavaScript,client)

numResults.execCalculate();

form1。#subform [0] .numResults :: calculate - (JavaScript,client)

var result = null;

if (numPages.rawValue > 0){
    result = 0;
    if (cbPhoto.rawValue == 1){
        result = numPages.rawValue - 1 + 20;
    }

    if (cbCert.rawValue == 1){
        result += (numPages.rawValue - 1) * 2 + 22;
    }

    if (result == 0) {
        result = null;  //show blank instead of 0
    }
}

//this line sets the value of the results field:
result;