AcroForm 字段内容验证(附多个示例代码)

一、概述

在AcroForm中实现自定义字段验证是常见需求。本文将通过文本字段验证示例,演示JavaScript脚本实现方法,并探讨不同验证方案的优劣。

二、基础验证实现

1. 创建验证脚本

// 设置默认验证通过
event.rc = true;

/**
 * 字段验证逻辑:
 * 1. 允许空值(便于用户清空重输)
 * 2. 仅接受"AAAA"或"BBBB"
 * 3. 非法输入时弹出警告并拒绝验证
 */
if (event.value != "" && event.value != "AAAA" && event.value != "BBBB") {
   
    // 弹出错误提示框
    app.alert("输入值必须为'AAAA'或'BBBB'!");
    
    // 设置验证失败
    event.rc = false;
}

2. 运行机制说明

参数/方法 作用说明 注意事项
event.value 获取字段当前输入值 会自动进行类型转换
event.rc 返回验证结果(true=通过) 必须显式设置
app.alert() 显示标准警告对话框 会中断用户操作

系统特性:验证仅在字段失去焦点时触发,错误输入会导致自动恢复前值。

三、增强型验证方案

1. 可视化标记方案

// 始终允许表单继续操作
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;
}

方案对比

特性 基础方案 可视化方案
用户操作连续性 中断式(自动回滚) 连续性(允许修改)
错误提示方式 弹窗警告 视觉标记+弹窗
表单提交影响 自动阻止非法提交 需额外验证逻辑

2. 复合验证策略

// 声明全局验证状态存储
var gValidationState = {
   };

function validateField(event) {
   
    // 基础验证
    const isValid = (event.value == "" || event.value == "AAAA" || event.value == "BBBB");
    
    // 视觉反馈
    event.target.textColor = isValid ? color.black : color.red;
    
    // 存储验证状态(供提交时检查)
    gValidationState[event.target.name] = isValid;
    
    // 动态错误提示(假设存在id为"errorMsg"的隐藏字段)
    if (!isValid && event.value != "") {
   
        getField("errorMsg").value = "非法输入:" + event.target.name;
        getField("errorMsg").display = display.visible;
    } else {
   
        getField("errorMsg").display = display.hidden;
    }
    
    // 始终允许继续操作
    event.rc = true;
}

四、最佳实践建议

  1. 视觉标记方案

    • 修改边框颜色增强提示:
      event.target.borderColor = color.red;
      
    • 建议组合使用文字颜色+边框变化
  2. 状态持久化方案

    • 使用doc.saveAs()时自动保存验证状态
    • 通过doc.addEventListener("save", validationCheck)
  3. 移动端适配

    // 触摸设备增加震动反馈
    if (!isValid && app.isTouchDevice) {
         
        app.vibrate(200);
    }
    

版本说明:本文代码兼容Acrobat X及以上版本,部分新特性需DC版本支持。

五、示例代码

基本验证方法

文本字段验证

// 基础验证脚本:仅允许输入"AAAA"或"BBBB"
event.rc = true;
if (event.value != "" && event.value != "AAAA" && event.value != "BBBB") {
   
    app.alert("输入

你可能感兴趣的:(AcroForm,pdf,验证,JavaScript,有效性)