Skip to main content
Version: latest

错误阻断逻辑

通过block ... with ...可以为题目或填空声明自定义校验规则。当条件成立时,答题页会直接展示错误提示,并阻止当前答案继续通过校验。

注意事项
  • block适合表达“答案不合法”的规则,不适合做显示隐藏或跳题
  • block可以作用在题目本身,也可以作用在某个填空项上
  • 错误文案支持固定文本,也支持拼接其他题目的答案或稳定函数结果
  • 当前支持在错误文案中使用题目答案、LANG()PARAMS()
  • RANDBETWEEN()这类非稳定随机函数,不建议用于错误文案

基础用法

最常见的用法是对当前题增加一条范围或格式限制,条件满足时直接报错。

例子

Q1. 您的年龄是?【单行文本题】Q1

自定义逻辑

if Q1 > 120 then block Q1 with "年龄不能大于120岁"
if Q1 < 0 then block Q1 with "年龄不能小于0岁"

效果

当答题者在Q1中输入不合法的数值时,Q1会立即展示对应的错误提示,且该答案不能通过校验。

跨题联合校验

block可以引用其他题目的答案,实现跨题一致性校验。

例子

Q1. 您的预算上限是?【单行文本题】Q1

Q2. 您本次计划消费金额是?【单行文本题】Q2

自定义逻辑

if Q2 > Q1 then block Q2 with "计划消费金额不能超过预算上限"

效果

当Q2填写的金额大于Q1时,Q2会显示错误,提醒答题者修正。

动态错误文案

错误文案支持拼接其他题目的答案,这样可以把限制值直接展示给答题者。

自定义逻辑

if Q2 > Q1 then block Q2 with "计划消费金额不能超过" + Q1

如果Q1填写的是500,那么报错文案会显示为“计划消费金额不能超过500”。

使用自定义参数或语言生成文案

错误文案也支持PARAMS()LANG(),可以做个性化提示。

自定义逻辑

if Q1 > 3 then block Q1 with PARAMS("user_name") + ",本题最多只能填3"
if LANG() == "en" and Q1 > 3 then block Q1 with "Maximum allowed value is 3"

阻断填空题中的某个填空项

如果要把错误提示精确显示在某个填空上,可以把block目标写成填空项。

例子

Q1. 请填写收货信息【填空题】Q1

  • 姓名 Q1B1
  • 手机号 Q1B2

自定义逻辑

if Q1B2 and len Q1B2 < 11 then block Q1B2 with "手机号长度不能少于11位"

效果

当手机号填空长度不足时,错误会直接挂在该填空项上,而不是整道题统一报错。

推荐写法

# 题目级错误
if Q2 > Q1 then block Q2 with "当前答案不能大于" + Q1

# 填空级错误
if Q1B2 and len Q1B2 < 11 then block Q1B2 with "手机号长度不能少于11位"

适用场景

  • 约束数值上下限,例如年龄、金额、数量
  • 做跨题一致性校验,例如实付金额不能大于预算
  • 精确限制填空项或矩阵单元格的输入内容
  • 结合PARAMS()输出更贴近业务场景的错误提示