如何在 AcroForm 中通过自定义验证脚本校验字段值?Adobe 提供了完善的基础设施,仅需简单脚本即可实现。
示例场景
验证文本字段值是否为 AAAA
或 BBBB
(实际场景中可能有更合理的值)。若用户输入 01234
,需弹出错误提示。
实现步骤
-
创建字段
创建文本框 → 右键打开属性对话框 → 选择 “Validate”(验证) 标签页。
-
选择验证类型
- 默认:无验证
- 数字字段:支持范围验证
- 文本字段:选择 “Custom Validation Script”(自定义验证脚本)
-
编辑脚本
点击 “Edit” 按钮打开脚本编辑器:
基础验证脚本(带注释)
// 默认允许通过验证
event.rc = true;
// 检查非空且非预期值
if (event.value != "" && event.value != "AAAA" && event.value != "BBBB") {
// 弹出错误提示
app.alert("输入值必须为 'AAAA' 或 'BBBB'!");
// 拒绝验证通过(恢复原值)
event.rc = false;
}
关键对象说明
对象属性 | 说明 |
---|---|
event.value |
当前字段输入值 |
event.rc |
验证结果(true =通过) |
注意:验证在字段失去焦点时触发(如点击外部区域)。若验证失败,字段值将恢复为之前的状态。
优化方案:标记错误字段
event.rc = true; // 始终允许值变更
if (event.value != "" && event.value != "AAAA" && event.value != "BBBB") {
app.alert("输入值必须为 'AAAA' 或 'BBBB'!");
event.target.textColor = color.red; // 标记为红色
} else {
event.target.textColor = color.black; // 恢复黑色
}
优缺点
- ✅ 用户可原地修改错误
- ❌ 需额外校验提交数据(表单提交时需检查字段颜色或全局变量)
高级错误提示方案
问题:用户保存表单后,错误提示消失,仅剩颜色标记可能被忽略。
解决方案:
在隐藏字段中显示错误信息(通过脚本动态更新)。
备选标记方式(避免影响可读性):
- 修改边框颜色
event.target.borderColor
- 修改背景色
event.target.fillColor
常见问题解答(Q&A)
Q1:如何检查字段是否包含子串 “V1”?
// 检查 "V1" 是否存在
if (event.value.indexOf("V1") === -1) {
app.alert("必须包含 'V1'!");
event.rc = false; // 拒绝
} else {
event.rc = true; // 通过
}
Q2:如何避免删除内容时触发错误?
// 添加空值检查
if (event.value !== "" && event.value.