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()
posted @ 2025-11-22 12:05  yangykaifa  阅读(5)  评论(0)    收藏  举报