Acrobat中的Javascript函数参数
希望你们不要因为这么简单的问题而生我的气 基本上,我有一个PDF表单,我正在用javascript编写脚本 我有一大堆复选框,我想根据其他输入设置required和/或not required,我正试图尽可能少地重复代码,特别是因为有大量的输入 现在,我能完成我尝试的最好方法是为每个输入实例设置一个函数,如下所示:Acrobat中的Javascript函数参数,javascript,pdf,Javascript,Pdf,希望你们不要因为这么简单的问题而生我的气 基本上,我有一个PDF表单,我正在用javascript编写脚本 我有一大堆复选框,我想根据其他输入设置required和/或not required,我正试图尽可能少地重复代码,特别是因为有大量的输入 现在,我能完成我尝试的最好方法是为每个输入实例设置一个函数,如下所示: function setWalkwayNotRequired() { this.getField("sidewalkAsphalt").required
function setWalkwayNotRequired() {
this.getField("sidewalkAsphalt").required = false;
this.getField("sidewalkConcrete").required = false;
this.getField("sidewalkPavers").required = false;
this.getField("sidewalkCondition").required = false;
}
然后,我将根据某个复选框的输入调用此函数:
if (this.getField("sidewalkNone").value == "Yes") {
setSidewalkNotRequired();
}
然后,上述所有字段都将设置为not required
我觉得应该有一种方法来创建一个“setRequired”或“setNotRequired”函数来获取相关字段的参数
在我看来是这样的:
function setRequired(a, b, c, d) {
this.getField(a).required = true;
this.getField(b).required = true;
this.getField(c).required = true;
this.getField(d).required = true;
}
然后,我会在所有情况下调用该功能,例如,人行道(如上所述)或车道等,如下所示:
if (this.getField("sidewalkNone").value == "Off") {
setRequired('"sidewalkAsphalt"', '"sidewalkConcrete"', '"sidewalkPavers"', '"sidewalkCondition"');
}
同样,在我看来,一旦调用函数,基于上述代码的输出类似于:
if (this.getField("sidewalkNone").value == "Off") {
this.getField("sidewalkAsphalt").required = true;
this.getField("sidewalkConcrete").required = true;
this.getField("sidewalkPavers").required = true;
this.getField("sidewalkCondition").required = true;
}
按照我在第一个代码块中所做的方式,我需要为每一组复选框创建单独的函数,在一个已经很大的文件中创建大量代码。第二种方法允许我使用1个函数,根据我在PDF中的位置,反复抛出字段名作为参数
我也不太清楚,像我用“…”引号那样声明参数是否合法;我这样做是因为我需要this.getField()中的双引号
再次,如果这是新手,我很抱歉,我只是尝试使用代码一段时间了,现在无法让它工作
任何输入都会令人惊讶。您只需传入一个
字段名数组即可:
function setRequired( fieldNames, isRequired = true ) {
for( var i = 0; i < fieldNames.length; i++ ) {
var fieldName = fieldNames[i];
this.getField( fieldName ).required = isRequired;
}
}
如果使用带点表示法的分层命名,则可以在父对象上设置影响所有子对象的属性。例如,如果将字段命名为“人行道.沥青”,“人行道.混凝土”和“人行道.摊铺机”
。。。将设置所有子项为必需的。您知道目标Acrobat/PDF的最低版本支持的ECMAScript的最高版本是什么吗?使用ES2015+功能会使事情变得更简单,但较旧的PDF查看器或较旧版本的Acrobat不支持。我不支持,但我知道它不允许您使用let变量。如果它“不允许您使用let变量”,那么它就不是JavaScript。你从哪里弄明白的?我试过的时候就是不起作用。当然是JS。老兄,非常感谢你,我就知道这很简单!有趣,这也很有帮助。谢谢
if( this.getField("sidewalkNone").value == "Off" ) {
setRequired( [ "sidewalkAsphalt", "sidewalkConcrete", "sidewalkPavers", "sidewalkCondition" ] );
}
this.getField("sidewalk").required = true;