当前位置: 首页 > news >正文

文档在线协同工具ONLYOFFICE教程:如何使用宏突出显示具有特定提示文本的空文本字段

ONLYOFFICE 表单可以轻松收集结构化输入,但空的、非必填字段经常会被忽略。在本篇博文中,我们将演示如何构建一个宏,用于突出显示表单中所有空的、非必填字段,或者仅突出显示包含特定提示文本的字段。

ONLYOFFICE Docs 最新下载

如何使用 ONLYOFFICE 宏突出显示具有特定提示文本的空文本字段

构建宏

1. 检索表单数据和实时表单对象

该宏首先使用 Api.GetDocument() 访问活动文档。然后,我们检索两组信息:

  • 表单数据:使用 doc.GetFormsData(),我们获取所有表单字段的 JSON 表示。此 JSON 包含诸如键、类型、值、提示以及字段是否必填等属性。
  • 活动表单对象:我们使用 doc.GetAllForms() 来检索与这些表单字段对应的活动对象。
    var doc = Api.GetDocument();var forms = doc.GetAllForms();var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));

2. 可选的基于提示的验证

有时您可能只想检查那些带有特定提示文本的空字段。在我们的宏中,您可以通过切换 checkSpecificTip 变量来启用或禁用此功能。例如,您可能需要只验证提示为“请输入您的第二个地址”的字段。

   // Optional: set to true to check only fields with a specific tip text.var checkSpecificTip = false;var requiredTipText = "Please enter your second address"; // Change this as needed.

3. 循环遍历每个表单字段

然后,该宏会遍历 JSON 数据中的每个表单字段。我们只关注文本表单字段(类型为“text”)。对于每个未标记为必填的文本字段,我们会检查其值是否为空。

forms.forEach(function(form) {if (form.GetFormType() === "textForm") {var key = form.GetFormKey();var required = form.IsRequired()// Find corresponding form data by key.var formData = formsData.find(function(fd) {return fd.key === key;});if (formData) {// A field is considered empty if its value is missing or only whitespace.var isEmpty = !formData.value || formData.value.trim() === "";// Use the live form's GetTip() to get the tip (if available).var tip = form.GetTipText() ? form.GetTipText() : "";var shouldCheck = !checkSpecificTip || (checkSpecificTip && tip.trim() === requiredTipText.trim());if (shouldCheck && isEmpty && !required) {form.SetBorderColor(0,255,127); // spring green border.form.SetBackgroundColor(171, 242, 255); // Light blue background.invalidCount++;}}}});
  • 检查字段值:
    如果字段的 JSON“值”属性缺失或仅存在空格,则该字段被视为空。
  • 提示过滤:
    如果启用了 checkSpecificTip,我们只检查提示与 requiredTipText 匹配的字段。
  • 高亮:
    对于符合条件的字段,我们找到对应的实时表单对象(通过匹配键),并设置春绿色边框和浅蓝色背景。

4.记录结果

最后,宏记录突出显示的空的不需要的文本字段的总数。

console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");

完整的宏代码

(function () {// Optional: set to true to check only fields with a specific tip text.var checkSpecificTip = false;var requiredTipText = "Please enter your second address"; // Change this as needed.var doc = Api.GetDocument();var forms = doc.GetAllForms();var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));var invalidCount = 0;forms.forEach(function(form) {if (form.GetFormType() === "textForm") {var key = form.GetFormKey();var required = form.IsRequired()// Find corresponding form data by key.var formData = formsData.find(function(fd) {return fd.key === key;});if (formData) {// A field is considered empty if its value is missing or only whitespace.var isEmpty = !formData.value || formData.value.trim() === "";// Use the live form's GetTip() to get the tip (if available).var tip = form.GetTipText() ? form.GetTipText() : "";var shouldCheck = !checkSpecificTip || (checkSpecificTip && tip.trim() === requiredTipText.trim());if (shouldCheck && isEmpty && !required) {form.SetBorderColor(0,255,127); // spring green border.form.SetBackgroundColor(171, 242, 255); // Light blue background.invalidCount++;}}}});console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");
})();

此宏会自动检测并高亮显示包含预定义占位符文本的空文本字段,从而节省时间并减少重复工作。我们希望它能够帮助您优化 ONLYOFFICE 表单并提升整体工作流程效率。

http://www.xdnf.cn/news/197587.html

相关文章:

  • window 图形显示驱动-在 WDDM 1.2 中提供无缝状态转换(下)
  • 系统架构师2025年论文《论面向对象的软件设计——UML 在面向对象软件架构中的应用》
  • leetcode 876. 链表的中间结点
  • Python 实现的运筹优化系统数学建模详解(动态规划模型)
  • 第二阶段:基础加强阶段总体介绍
  • 网络安全怎么入门?快速了解
  • 基于大模型的公安预审办案笔录分析的挑战与应对策略-3
  • 2025汽车制造企业数字化转型路径参考
  • TypeScript之基础知识
  • vue报错:Loading chunk * failed,vue-router懒加载出错问题。
  • C++复习补充 类型转换和RTTI
  • 人工智能与机器学习:Python从零实现K-Means 算法
  • RAG工程-基于LangChain 实现 Advanced RAG(预检索优化)
  • 驱动开发硬核特训 │ Regulator 子系统全解
  • 企业架构之旅(2):解锁TOGAF ADM
  • 什么是 DDoS 攻击?高防 IP 如何有效防护?2025全面解析与方案推荐
  • 风力发电领域canopen转Profinet网关的应用
  • echarts X轴是日期,Y轴是文字
  • 【mysql】python+agent调用
  • 算法相关概念
  • Python创意爱心代码分享指南
  • 信号完整性简介第一篇
  • C++中的格式化字符串
  • TMI投稿指南(二):投稿文章注意事项
  • JAVA设计模式——(八)单例模式
  • 详解UnityWebRequest类
  • 02_使用 AES 算法实现文件加密上传至阿里云、解密下载
  • 阿里云ftp服务器登录要怎么做?如何访问ftp服务器?
  • 【权限模型】RBAC模型详解
  • 东莞SMT贴片加工工艺优化解析