Acrobat js 数组操作与 splice 方法解决动态表单字段重复值问题
1. 问题背景与翻译
1.1 原始问题描述(翻译)
在 Acrobat JavaScript 中使用 splice 方法操作数组时,我遇到了一个难以解决的问题,希望能得到帮助。
我有一个下拉列表,在其验证部分包含了脚本。当从列表中选择一个选项时,该值会传递给一个函数,该函数随后会从选取列表中随机选择值来填充一系列字段,这些值基于最初选择的值。
我的问题是:为了防止字段被重复的随机值填充,我使用了 splice 方法在随机选择下一个值之前从选取列表中移除该选项。但我需要以某种方式重置这个选取列表变量,否则如果在原始下拉列表中选择了不同的选项,然后再次选择第一个选项,它只会使用数组中剩余的值。
最终我需要的是,无论下拉框被更改多少次,字段总是从完整的选取列表中填充。
非常感谢任何能提供帮助的人,我已在下面提供了示例代码。
1.2 代码示例与中文注释
// 下拉列表验证部分的脚本
if(event.value == "Please Select...") {// 如果选择"请选择...",重置表单字段this.resetForm(["option1","option2"]);
} else if(event.value == "option1") {// 如果选择选项1,调用FieldPop函数并传入option1数组FieldPop(option1);
} else if(event.value == "option2") {// 如果选择选项2,调用FieldPop函数并传入option2数组FieldPop(option2);
} else {// 其他情况,直接设置字段值SetFieldValues(event.value);
}// 示例选取列表 - 选项1的值数组
var option1 = ["value1", // 值1"value2", // 值2"value3", // 值3
]// 填充字段的函数示例
function FieldPop(temp) {// 为字段1设置随机值this.getField("Field1").value = temp[Math.floor(Math.random()*temp.length)];// 获取字段1的值并从数组中移除var remove01 = this.getField("Field1").value;temp.splice(temp.indexOf(remove01), 1); // 使用splice从数组中删除已使用的值// 为字段2设置随机值(从剩余值中)this.getField("Field2").value = temp[Math.floor(Math.random()*temp.length)];// 获取字段2的值并从数组中移除var remove02 = this.getField("Field2").value;temp.splice(temp.indexOf(remove02), 1);// 为字段3设置随机值(从剩余值中)this.getField("Field3").value = temp[Math.floor(Math.random()