Javascript 在Acrobat中,我可以将数组中的字段设置为必填字段,还是快速设置多个必填/非必填字段?

Javascript 在Acrobat中,我可以将数组中的字段设置为必填字段,还是快速设置多个必填/非必填字段?,javascript,acrobat,Javascript,Acrobat,我所在的实验室每年分发和评估一次能力测试,目前正在Adobe Acrobat中开发一个PDF,这样我们就可以以数字方式(而不是通过邮件)收集测试结果。我对JavaScript及其在Acrobat中的使用是完全陌生的,但到目前为止,我已经从很棒的论坛答案中拼凑出了一个工作表单 在表格中,有多个测试,每个测试可能有多个执行测试的方法。为了确保每个字段都被填写,我们已经包括了基于单选按钮或下拉选择的编码 var CDA = getField("CDA").value var CD

我所在的实验室每年分发和评估一次能力测试,目前正在Adobe Acrobat中开发一个PDF,这样我们就可以以数字方式(而不是通过邮件)收集测试结果。我对JavaScript及其在Acrobat中的使用是完全陌生的,但到目前为止,我已经从很棒的论坛答案中拼凑出了一个工作表单

在表格中,有多个测试,每个测试可能有多个执行测试的方法。为了确保每个字段都被填写,我们已经包括了基于单选按钮或下拉选择的编码

var CDA = getField("CDA").value

var CDA1 = getField("CDA Unheated Sample 15");
var CDA2 = getField("CDA Unheated Sample 16");
var CDA3 = getField("CDA Unheated Sample 17");
var CDA4 = getField("CDA Unheated Sample 18");
var CDA5 = getField("CDA Unheated Sample 19");
var CDA6 = getField("CDA Unheated Sample 20");
var CDA7 = getField("CDA Unheated Sample 21");
var CDA8 = getField("CDA Unheated Sample 22");
var CDA9 = getField("CDA Unheated Positive Control");
var CDA10 = getField("CDA Unheated Negative Control");
var CDA11 = getField("CDA Interp Sample 15");
var CDA12 = getField("CDA Interp Sample 16");
var CDA13 = getField("CDA Interp Sample 17");
var CDA14 = getField("CDA Interp Sample 18");
var CDA15 = getField("CDA Interp Sample 19");
var CDA16 = getField("CDA Interp Sample 20");
var CDA17 = getField("CDA Interp Sample 21");
var CDA18 = getField("CDA Interp Sample 22");
var CDA19 = getField("CDA Interp Positive Control");
var CDA20 = getField("CDA Interp Negative Control");
var CDA21 = getField("Date Analyzed_2");
var CDA22 = getField("Sample temperature_3");

if ( CDA == "Not Performed") {
CDA1.required = false;
CDA2.required = false;
CDA3.required = false;
CDA4.required = false;
CDA5.required = false;
CDA6.required = false;
CDA7.required = false;
CDA8.required = false;
CDA9.required = false;
CDA10.required = false;
CDA11.required = false;
CDA12.required = false;
CDA13.required = false;
CDA14.required = false;
CDA15.required = false;
CDA16.required = false;
CDA17.required = false;
CDA18.required = false;
CDA19.required = false;
CDA20.required = false;
CDA21.required = false;
CDA22.required = false;
}

else if (CDA == "Performed") {
CDA1.required = true;
CDA2.required = true;
CDA3.required = true;
CDA4.required = true;
CDA5.required = true;
CDA6.required = true;
CDA7.required = true;
CDA8.required = true;
CDA9.required = true;
CDA10.required = true;
CDA11.required = true;
CDA12.required = true;
CDA13.required = true;
CDA14.required = true;
CDA15.required = true;
CDA16.required = true;
CDA17.required = true;
CDA18.required = true;
CDA19.required = true;
CDA20.required = true;
CDA21.required = true;
CDA22.required = true;
}
虽然上面的方法可以工作,但它感觉相当笨拙,是已执行/未执行方法的较短代码位之一。对于使用多种方法的一些测试,我有3-5种情况发生,每次都需要更改所有“必需”字段(试图证明它)

是否有一种更有效的方法可以同时更改许多字段的“必需”状态?我是否可以将可能需要调用的所有字段存储在一个数组中,然后快速更改数组中所有字段的“必需”状态?更像是:

var CDA = getField("CDA").value

var CDA_array = [getField("CDA Unheated Sample 15"),
getField("CDA Unheated Sample 16"),
getField("CDA Unheated Sample 17"),
getField("CDA Unheated Sample 18"),
getField("CDA Unheated Sample 19"),
getField("CDA Unheated Sample 20"),
getField("CDA Unheated Sample 21"),
getField("CDA Unheated Sample 22"),
getField("CDA Unheated Positive Control"),
getField("CDA Unheated Negative Control"),
getField("CDA Interp Sample 15"),
getField("CDA Interp Sample 16"),
getField("CDA Interp Sample 17"),
getField("CDA Interp Sample 18"),
getField("CDA Interp Sample 19"),
getField("CDA Interp Sample 20"),
getField("CDA Interp Sample 21"),
getField("CDA Interp Sample 22"),
getField("CDA Interp Positive Control"),
getField("CDA Interp Negative Control"),
getField("Date Analyzed_2"),
getField("Sample temperature_3")];

if (CDA == "Not Performed") {
CDA_array.required = false;
}

else if (CDA == "Performed") {
CDA_array.required = true;
}

这是可以做到的,还是我应该接受我们的第一个工作版本?我目前处于远程状态,在下周之前无法使用Acrobat的完整许可证访问我们的工作站,因此我无法尝试第二段代码来查看发生了什么。提前感谢您阅读这本古老的长篇小说,以及您能提供的任何帮助或见解

如果使用点表示法将字段重命名为层次结构,则可以在父字段上设置所需的属性。像这样命名您的字段

未加热样品15

未加热样品16

CDA.未加热样品17

CDA、Interp阳性对照

等等

你的代码就变成了

this.getField("CDA").required = true;


CDA是父字段。然后孩子们继承所需的财产。

谢谢!如果我将字段命名为CDA.Sample.15等,改为CDA.Control.Positive,那么只更改控制分支中的字段的正确方法是什么?或者调用CDA下的特定子级别(?)。它是:
this.getField(“CDA.Control”).required=true
或将
this.getField(“控件”).required=true是否足够?this.getField(“CDA.Control”).required=true;
this.getField("CDA").required = false;