Javascript 在Acrobat中计算总数

Javascript 在Acrobat中计算总数,javascript,pdf,Javascript,Pdf,我试图在Acrobat中使用JavaScript以交互形式总计10个数据字段。最初,数据是手动输入的。我们创建的计算公式在手动输入数据时有效,但在从另一个表单导出数据,然后使用FDF文件导入到此表单时不能正确合计 当前工作流使用三种形式。数据输入表格1和表格2。然后将数据作为数据从两个表单导出,并以FDF格式保存 打开表单3,并将两个数据文件导入该表单。有两个具有类似公式的合计字段,一个将所有负数相加,另一个将所有正数相加 但是,当我们导入两个文件时,只会触发第一个计算。第二个问题被忽略了。如果

我试图在Acrobat中使用JavaScript以交互形式总计10个数据字段。最初,数据是手动输入的。我们创建的计算公式在手动输入数据时有效,但在从另一个表单导出数据,然后使用FDF文件导入到此表单时不能正确合计

当前工作流使用三种形式。数据输入表格1和表格2。然后将数据作为数据从两个表单导出,并以FDF格式保存

打开表单3,并将两个数据文件导入该表单。有两个具有类似公式的合计字段,一个将所有负数相加,另一个将所有正数相加

但是,当我们导入两个文件时,只会触发第一个计算。第二个问题被忽略了。如果第二次导入任何一个数据文件,则会触发第二次计算

因此,我们试图找出在导入数据文件后如何告诉Acrobat进行这两种计算

下面是负数的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();
函数calcLost(){
var amountLost=0;
var pt_neck_diff=this.getField('pt_neck_diff')。值;
var pt_arm_r_diff=this.getField('pt_arm_r_diff')。值;
var pt_arm_l_diff=this.getField('pt_arm_l_diff')。值;
var pt_chest_diff=this.getField('pt_chest_diff')。值;
var pt_belly_diff=this.getField('pt_belly_diff')。值;
var pt_health_diff=这个.getField('pt_health_diff')。值;
var pt_hips_diff=此.getField('pt_hips_diff')。值;
var pt_butt_diff=this.getField('pt_butt_diff')。值;
var pt_thigh_r_diff=this.getField('pt_thigh_r_diff')。值;
var pt_thigh_l_diff=this.getField('pt_thigh_l_diff')。值;
if(pt_颈部_差异<0){
数量损失+=pt\U颈部\U差异
}
如果(pt_arm_r_diff<0){
数量损失+=pt_臂_r_差异
}
如果(pt_arm_l_diff<0){
数量损失+=pt_臂_l_差异
}
if(pt_胸部_差异<0){
损失金额+=pt\U胸部\U差异
}
if(pt_肚皮_差异<0){
损失金额+=pt\U肚皮\U差异
}
if(pt_腰_差<0){
损失量+=磅/腰/差
}
if(pt_hips_diff<0){
损失金额+=pt\u hips\u diff
}
if(pt_对接_差异<0){
数量损失+=pt\U对接\U差异
}
if(pt_大腿_r_差异<0){
损失金额+=大腿部位的差异
}
if(pt_大腿_l_差异<0){
损失金额+=大腿部位与大腿部位的差异
}
返还损失金额;
}
event.value=calcLost();
另一个(几乎相同)脚本计算正数。有人知道如何告诉Acrobat运行第二个脚本吗

如前所述,如果重新导入其中一个数据文件,两个公式都可以正常工作。第一次导入文件时,它无法正常工作

另一个有趣的事实是,在类似的形式下,仅使用四位数字的导数计算可以很好地工作。当我们使用包含10个数据字段的表单时,公式不起作用


我们被难住了。

您可能需要再次检查表单字段()的计算顺序


或者,调用this.calculateNow()将强制计算表单上的所有计算字段。请参阅此处的Adobe PDF API参考:

您使用哪个事件触发计算?计算在表单字段中。表单字段有几个可以放置javascript代码的事件(例如验证、格式化和计算)。据我所知,如果将代码放在calculate事件中,它只会在用户(个人)修改表单字段的值时更改。编程修改(通常)不会触发事件。是否有方法在导入时触发计算?我不知道。。。但我可能错了。