我正在尝试在 Acrobat 中使用 JavaScript 在交互式表单中总计 10 个数据字段。最初,数据是手动输入的。我们创建的计算公式在手动输入数据时有效,但在从另一个表单导出数据然后使用 FDF 文件导入此表单时无法正确汇总。
当前的工作流程使用三种形式。将数据输入表格 1 和 2。然后将数据从两个表格中导出为数据并以 FDF 格式保存。
表格 3 被打开,两个数据文件被导入到这个表格中。有两个 TOTALS 字段具有相似的公式,一个将所有负数相加,另一个将所有正数相加。
但是,当我们导入这两个文件时,只会触发第一个计算。第二个被忽略。如果您再次导入任一数据文件,则第二次计算将启动。
因此,我们试图弄清楚如何在导入数据文件后告诉 Acrobat 进行 BOTH 计算。
下面是负数的 JavaScript 代码:
function calcLost(){
var amountLost = 0;
var pt_neck_diff = this.getField('pt_neck_diff').value;
var pt_arm_r_diff = this.getField('pt_arm_r_diff').value;
var pt_arm_l_diff = this.getField('pt_arm_l_diff').value;
var pt_chest_diff = this.getField('pt_chest_diff').value;
var pt_belly_diff = this.getField('pt_belly_diff').value;
var pt_waist_diff = this.getField('pt_waist_diff').value;
var pt_hips_diff = this.getField('pt_hips_diff').value;
var pt_butt_diff = this.getField('pt_butt_diff').value;
var pt_thigh_r_diff = this.getField('pt_thigh_r_diff').value;
var pt_thigh_l_diff = this.getField('pt_thigh_l_diff').value;
if(pt_neck_diff < 0){
amountLost += pt_neck_diff
}
if(pt_arm_r_diff < 0){
amountLost += pt_arm_r_diff
}
if(pt_arm_l_diff < 0){
amountLost += pt_arm_l_diff
}
if(pt_chest_diff < 0){
amountLost += pt_chest_diff
}
if(pt_belly_diff < 0){
amountLost += pt_belly_diff
}
if(pt_waist_diff < 0){
amountLost += pt_waist_diff
}
if(pt_hips_diff < 0){
amountLost += pt_hips_diff
}
if(pt_butt_diff < 0){
amountLost += pt_butt_diff
}
if(pt_thigh_r_diff < 0){
amountLost += pt_thigh_r_diff
}
if(pt_thigh_l_diff < 0){
amountLost += pt_thigh_l_diff
}
return amountLost;
}
event.value = calcLost();
另一个(几乎相同)脚本计算正数。任何人都知道如何告诉 Acrobat 运行第二个脚本?
如前所述,如果您重新导入任一数据文件,这两个公式都可以正常工作。首次导入文件时,它无法正常工作。
另一个有趣的事实是,在类似的形式中,仅使用四个数字的导数计算工作正常。当我们使用包含 10 个数据字段的表单时,公式不起作用。
我们很难过。