如何解决Adobe Acrobat中JavaScript missing : after property id错误
错误原因
JavaScript对象语法要求,当属性名包含空格、句点等特殊字符,不是纯连续字母/数字/下划线的合法标识符时,必须给属性名包裹引号(单引号、双引号均可)。你参考的示例代码里的部门名都是无空格无特殊符号的连续单词(比如Accounting、Engineering),可以直接作为属性名使用,但你替换的法庭名称包含空格、句点,直接裸写会导致JS解析器无法识别属性边界,直接抛出missing : after property id的语法错误。
修复后可直接使用的代码
// 法庭-地址映射数据,所有带特殊字符/空格的属性名统一加单引号包裹 var DeptData = { 'South Division Dept. 1': { address: "20520 68th Ave. W. Lynnwood WA 98036"}, 'South Division Dept. 2': { address: "20520 68th Ave W Lynnwood WA 98036"}, 'South Division Dept. 3': { address: "20520 68th Ave. W. Lynnwood WA 98036"}, 'South Division Dept. 4': { address: "20520 68th Ave. W. Lynnwood WA 98036"}, 'Cascade Division Dept. 1': { address: "415 E Burke Ave. Arlington WA 98223"}, 'Cascade Division Dept. 2': { address: "415 E Burke Ave. Arlington WA 98223"}, 'Evergreen Division Dept. 1': { address: "14414 179th Ave SE Monroe WA 98272"}, 'Evergreen Division Dept. 2': { address: "14414 179th Ave SE Monroe WA 98272"}, 'Everett Division Courtroom 3A': { address: "3000 Rockefeller Ave Everett WA 98201"}, 'Everett Division Courtroom 3B': { address: "3000 Rockefeller Ave Everett WA 98201"}, 'Everett Division Courtroom 3C': { address: "3000 Rockefeller Ave Everett WA 98201"} }; function SetFieldValues(cCourtroom) { // 增加空值判断,避免选空选项时报错 if(DeptData[cCourtroom]){ this.getField("address").value = DeptData[cCourtroom].address; } else { this.getField("address").value = ""; } }
表单配置注意事项
- 给名为
Courtroom的下拉框配置触发动作:在下拉框的属性-动作面板里,选择「选择选项」作为触发条件,运行脚本SetFieldValues(event.value);,否则选中选项后不会触发地址填充逻辑。 - 下拉框每个选项的导出值必须和上面代码里
DeptData的属性名完全一致,包括空格、标点、大小写,不能有多余字符,否则会匹配不到对应地址。 - 确认存储地址的文本字段名称严格为
address,Adobe Acrobat的表单字段名大小写敏感,写成Address、addres都会导致取值失败。
内容的提问来源于stack exchange,提问作者Traynwreck1212
相关产品推荐
相关产品推荐

