如何解决Bluebeam Revu中多自动填充下拉菜单冲突问题?
问题原因与修复方案
你遇到的第一个下拉菜单失效问题,核心原因是重复声明了全局变量contarr和names。每段脚本都会重新给这两个变量赋值,导致第一个菜单依赖的墨西哥地区数组被后面的危地马拉、智利数组覆盖,自然无法正常触发自动填充。
修复后的完整脚本
// 墨西哥地区数据 var mexicoArr = [ ["Mexico", "Interior/Exterior", "Status", "Visita"], ["Ciudad de Mexico, Mexico", "Interior", "Diseño", "Visita: 20 de mayo 2025"], ["Chihuahua, Mexico", "Exterior", "En proceso de licitación", "Visita: 30 de junio 2025"], ["Cualican, Mexico", "Interior", "En proceso de licitación", "Visita: 20 de julio 2025"], ["Tula, Mexico", "Interior", "En proceso de licitación", "Visita: 08 de abril 2025"], ["Toluca, Mexico", "Interior", "En proceso de licitación", "Visita: 30 de abril 2025"] ]; var mexicoNames = []; for (var i = 0; i < mexicoArr.length; i++) { mexicoNames.push(mexicoArr[i][0]); } this.getField("Mexico").setItems(mexicoNames); this.getField("Mexico").setAction("Keystroke", "onMexicoSwitch(event.value);"); selectMexico(0); function onMexicoSwitch(name) { for (var i = 0; i < mexicoArr.length; i++) { if (mexicoArr[i][0] == name) { selectMexico(i); break; } } } function selectMexico(i) { this.getField("Interior/Exterior").value = mexicoArr[i][1]; this.getField("Status").value = mexicoArr[i][2]; this.getField("Visita").value = mexicoArr[i][3]; } // 危地马拉地区数据 var guatemalaArr = [ ["Guatemala", "Interior/Exterior 2", "Status 2", "Visita 2"], ["Huehuetenango, Guatemala", "Interior", "Licitación", "Visita: 8 de abril 2025"], ["Retalhuleu, Guatemala", "Exterior", "En proceso de licitación", "Visita: 30 de junio 2025"] ]; var guatemalaNames = []; for (var i = 0; i < guatemalaArr.length; i++) { guatemalaNames.push(guatemalaArr[i][0]); } this.getField("Guatemala").setItems(guatemalaNames); this.getField("Guatemala").setAction("Keystroke", "onGuatemalaSwitch(event.value);"); selectGuatemala(0); function onGuatemalaSwitch(name) { for (var i = 0; i < guatemalaArr.length; i++) { if (guatemalaArr[i][0] == name) { selectGuatemala(i); break; } } } function selectGuatemala(i) { this.getField("Interior/Exterior 2").value = guatemalaArr[i][1]; this.getField("Status 2").value = guatemalaArr[i][2]; this.getField("Visita 2").value = guatemalaArr[i][3]; } // 智利地区数据 var chileArr = [ ["Chile", "Interior/Exterior 3", "Status 3", "Visita 3"], ["Puerto Montt, Chile", "Interior", "Licitación", "Visita: 30 de abril 2025"], ["Viña del Mar, Chile", "Exterior", "En proceso de licitación", "Visita: 20 de agosto 2025"] ]; var chileNames = []; for (var i = 0; i < chileArr.length; i++) { chileNames.push(chileArr[i][0]); } this.getField("Chile").setItems(chileNames); this.getField("Chile").setAction("Keystroke", "onChileSwitch(event.value);"); selectChile(0); function onChileSwitch(name) { for (var i = 0; i < chileArr.length; i++) { if (chileArr[i][0] == name) { selectChile(i); break; } } } function selectChile(i) { this.getField("Interior/Exterior 3").value = chileArr[i][1]; this.getField("Status 3").value = chileArr[i][2]; this.getField("Visita 3").value = chileArr[i][3]; }
关键修改说明
- 给每个地区的数据数组赋予唯一名称(
mexicoArr、guatemalaArr、chileArr),避免全局变量覆盖 - 每个地区的名称数组也使用独立变量(
mexicoNames等),彻底消除变量冲突 - 保持各地区的切换逻辑独立,互不干扰
验证步骤
- 替换原脚本为上述修复后的版本
- 确认表单中的字段名称与脚本中
getField()调用的名称完全匹配 - 在Bluebeam Revu中重新加载脚本并测试三个下拉菜单的自动填充功能
内容的提问来源于stack exchange,提问作者Ethel Ferraro
相关产品推荐
相关产品推荐

