校验答案
validate 用于检查答案是否符合要求。例如金额不能超过预算、多选题至少选两项、上传图片必须包含指定文字。
基本写法
validate Q2 with IF(通过条件,"","错误提示")
Q2:显示错误提示的题目。with后:计算校验结果的公式。- 返回
"":通过;返回其他文字:不通过,并显示该文字。
不要返回 true、false 或“通过”代替空字符串。校验未通过时,答题者需要修改答案才能通过对应的表单校验。
数值不能超过 100
Q2 是数字填空题:
validate Q2 with IF(DEFAULT(Q2,0)>100,"不能超过100","")
这里为空时按 0 处理,因此允许暂不填写。若必须填写,同时在题目设置中开启必填。
必须填写正数
validate Q2 with IF(DEFAULT(Q2,0)>0,"","请输入大于0的数字")
空答案、0 和负数都会显示提示。Q2 应设置为数字填空。
金额不能超过预算
Q1 是预算,Q2 是申报金额,两题都设置为必填的数字填空:
validate Q2 with IF(Q2>Q1,"申报金额不能超过预算","")
规则读取两题答案,但提示显示在 Q2。来源题未填写时可能暂不计算,由各题的必填设置检查空答案。
三项比例合计必须为 100
Q1、Q2、Q3 是数字填空题:
validate Q3 with IF(SUM(DEFAULT(Q1,0),DEFAULT(Q2,0),DEFAULT(Q3,0))==100,"","三项比例之和必须为100")
提示放在最后一项 Q3,便于答题者完成三项后查看。
多选题至少选两项
Q2 是普通多选题:
validate Q2 with IF(COUNT(Q2)>=2,"","请至少选择两项")
没有选择时数量为 0,也会显示提示。
只在指定条件下校验
Q1A1 表示“申请报销”,Q2 是报销金额的数字填空题:
validate Q2 with IF(AND(Q1A1,DEFAULT(Q2,0)<=0),"申请报销时请填写大于0的金额","")
未选择“申请报销”时通过;选择后,Q2 为空、为 0 或为负数都会提示。
不要写 if Q1A1 then validate ...。条件必须放进 with 后的公式。
同一题有多项要求
同一题的多条 validate 会覆盖校验结果,应合成一条。下面同时检查“大于 0”和“不超过 100”,优先显示第一个不满足的提示:
validate Q2 with IF(DEFAULT(Q2,0)<=0,"请输入大于0的数字",IF(DEFAULT(Q2,0)>100,"不能超过100",""))
若多个条件共用一个提示,可用 AND 或 OR 组合判断。
空值为什么需要 DEFAULT
普通题未填写时,公式可能没有可计算的值,因而不更新校验提示。即使空变量放在 IF 的某个分支中,也可能影响整个公式。
需要在空答案时给出结果,就在每处引用中明确默认值,例如 DEFAULT(Q2,0) 或 DEFAULT(Q2,"")。选择题选项状态和 OCR 文字已有约定的空值,见变量与取值。
图片关键词、消防证书识别、空识别结果和识别文字赋值,见 OCR 图片校验。