我制作了这个PDF计算器,以显示超过/低于25%的时间。该脚本有点工作,除非我选择你不知道它正在工作的新的开放字段,并且一旦你选择另一个字段它恢复到acrobat标准文本字段颜色,想法是新的开放字段保持绿色或红色,因为表单得到只有在重置时才填写它应该恢复正常颜色。
有人可以帮帮我,我在这里错过了什么?
谢谢。
var v1 = this.getField("newOpening").value;
var v2 = this.getField("calculatedTotal").value;
if (v1 < v2) {
bg = color.green;
} else if (v1 > v2) {
bg = color.red;
}
event.target.fillColor = bg;
答案 0 :(得分:0)
代码实际上应该有效。但是,它有一些问题。
第一个问题是变量bg没有明确定义。它在原始脚本中出现的方式意味着它是一个全局变量,可以从文档中以任何方式访问和修改它。更好地明确定义它。
另一个问题是计算序列没有提到的触发器。因此,您需要一个活动元素(实质上是一个按钮,但链接或页面事件也会这样做),或者您需要一些启动字段事件序列的字段事件。
简单地说,如果您在文档的任何字段中输入值,则会进行计算,然后如果分配给计算操作,脚本将被执行。
有一件事你需要考虑。在脚本中,区分v1小于v2,v1大于v2。如果两个值相等,会发生什么?您还可以确保实际将字段中的值视为数字。最简单的方法是将其格式设置为Number。否则,您可以将它们的值乘以1。
您的代码的略微修改版本将如下所示(假设两个值相同(也在表单的默认状态下),背景将为白色):
var v1 = this.getField("newOpening") ;
var v2 = this.getField("calculatedTotal") ;
var bg = color.white ;
if (v1.value*1 < v2.value*1) {
bg = color.green;
} else {
if (v1.value*1 > v2.value*1) {
bg = color.red;
}
}
event.target.fillColor = bg;
应该这样做。如果仍然遇到问题,可以考虑使用明确的颜色定义数组作为颜色,如
["RGB", 1, 0, 0]
的 color.red
["RGB", 0, 1, 0]
color.green
["RGB", 1, 1, 1]
color.white