Acrobat可填写表单:添加文本行按钮行数限制及删除按钮需求
Acrobat脚本修改:限制新增行数+添加删除行功能
直接搞定两个需求:修复原脚本无限新增行的bug,同时限制最多创建5行;另外新增删除行的功能,具体代码和设置如下:
一、修复后的新增行脚本(限制最多5行)
原脚本的核心bug是最后一行rowCounter += -1,导致计数器一直倒退,根本没法限制行数。修正后的代码如下:
var rowCounter = 1; // 记录已创建的行数,初始为1(还未创建任何行) function addRow() { // 最多允许创建5行,超过则提示并终止 if (rowCounter > 5) { app.alert("最多只能添加5行"); return; } var w = 144; // 单个文本框宽度 var h = 18; // 单个文本框高度 var wGap = 6; // 列之间的间距 // 当前行的四个文本框名称 var fieldNames = [ "Row" + rowCounter + ".Column1", "Row" + rowCounter + ".Column2", "Row" + rowCounter + ".Column3", "Row" + rowCounter + ".Column4" ]; // 计算当前行的垂直位置,每行间隔24单位 var yPos = 700 + rowCounter * 24; var coordinates = [10, yPos]; var afields = [coordinates[0], coordinates[1], coordinates[0] + w, coordinates[1] - h]; // 创建当前行的四个文本框 for (var i = 0; i < fieldNames.length; i++) { this.addField(fieldNames[i], "text", 0, afields); afields[0] += (w + wGap); afields[2] += (w + wGap); } rowCounter++; // 更新行数计数器 }
二、删除行脚本
新增deleteRow函数,用来删除最后一行的所有文本框:
function deleteRow() { // 没有已创建的行时提示 if (rowCounter <= 1) { app.alert("没有可删除的行"); return; } // 目标行是上一行(因为rowCounter已经是下一行的序号) var targetRow = rowCounter - 1; var fieldNames = [ "Row" + targetRow + ".Column1", "Row" + targetRow + ".Column2", "Row" + targetRow + ".Column3", "Row" + targetRow + ".Column4" ]; // 逐个删除字段(先判断字段存在再删除,避免报错) for (var i = 0; i < fieldNames.length; i++) { var field = this.getField(fieldNames[i]); if (field) { this.removeField(fieldNames[i]); } } rowCounter--; // 更新行数计数器 }
三、按钮设置
- 新增行按钮:编辑按钮的「Mouse Up」事件,选择「执行JavaScript」,输入代码:
addRow(); - 删除行按钮:同理,编辑按钮的「Mouse Up」事件,执行JavaScript代码:
deleteRow();
内容的提问来源于stack exchange,提问作者Eras
相关产品推荐
相关产品推荐

