如何为2个单选按钮选择编写Java Script计算?

时间:2017-03-17 15:56:35

标签: javascript button radio acrobat

我正在使用Adobe Acrobat Pro DC创建计算器。我有两组单选按钮,需要根据BOTH选项创建一个值。

您正在测试哪种类型的部件? (PartType) -Gear -Camshaft -Bearing

您在寻找什么类型的缺陷? (DefectType) -Burn -Stress -Depth

如果选择了Gear and Burn,则值为10。 如果选择了齿轮和应力,则值为70。 如果选择了“轴承和刻录”,则值为35。

我无法为每个选择分配值,因为组合是唯一的。如何在Java Script中编写它?

这是我到目前为止所做的事情(我意识到这是错误的)

if(PartType == Gear&& DefectType == Burn)value == 10

请帮忙!谢谢!

1 个答案:

答案 0 :(得分:0)

我们可能有两种可能的解决方法。

注意:在下文中,我们假设该值将显示在文本字段中。显示的代码段是该特定字段的Calculate事件脚本的一部分。如果要在另一个计算中使用该值,请定义该变量,然后使用其名称而不是“event.value”。

a)如果可以从选项中计算出值(在“部件类型加缺陷类型”的意义上),我们可以将组件设置为单选按钮选择的返回值。在这种情况下,值会快速计算:

event.value = this.getField("PartType").value*1 + this.getField("DefectType").value*1) ;

或者,如果有更复杂的算法/公式,请改用它。

b)如果没有公式/算法来计算值,我们需要一个查找表。在我们的例子中,我们将定义一个二维数组,其中元素表示PartType,并且是相应DefectTypes的数组。

单选按钮字段的返回值将对应于该查找表中的索引号。

我们将首先开始设置查找表:

var myLUT = new Array() ;
myLUT[0] = [10, 70, aa] ; // values for Gear and Burn, Stress, Depth
myLUT[1] = [bb, cc, dd] ; // values for Camshaft and Burn, Stress, Depth
myLUT[2] = [35, ee, ff] ; // values for Bearing and Burn, Stress, Depth

其中aa,bb等表示合适组件的值。

我们可以在计算脚本中定义此查找表,但创建包含此定义的文档级脚本效率更高。

Calculate脚本如下所示:

var pt = this.getField("PartType").value ;
var dt = this.getField("DefectType").value ;

event.value = myLUT[pt][dt] ;

那就可以了。

处理单选按钮字段时还有一件事。即使必须选择一个选项,也可以(并且合法)没有选择默认值。但是,这两种情况都假设选择了选项。因此,我们必须通过要求两个组都有一个选中的选项来保护代码:

if (this.getField("PartType").value != "Off" && this.getField("DefectType").value != "Off") {
// now run our code
}

我们可能还必须指定如果未检查一个或两个单选按钮组会发生什么。