You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过动作捕获表单首次成功submit并设置只读状态?

Orbeon表单实现首次提交后只读+取消只读的方案

核心思路

靠隐藏字段标记提交状态,监听首次提交成功事件触发只读设置;额外加一个按钮,用来取消只读、重置状态恢复表单编辑权限。

具体步骤

  1. 新增隐藏字段标记提交状态
    在表单里加个hidden字段,比如命名为is-submitted,初始值设为false,专门用来记录表单是否完成首次提交。

  2. 配置提交成功后的触发动作(仅首次生效)
    找到表单的「提交成功」事件,添加两个动作,都要加条件判断$is-submitted = false(),确保只有首次提交时才执行:

  • 设置隐藏字段值:把is-submitted的值改为true
  • 设置表单为只读:调用xxf:set-readonly('fr-form-group', true())——fr-form-group是Orbeon表单的根容器ID,这样整个表单会被设为只读;如果只想锁定部分字段,把ID换成对应控件的ID即可。
  1. 添加「取消只读」按钮
    在表单合适位置新增按钮,配置以下动作:
  • 把is-submitted的值重置为false
  • 调用xxf:set-readonly('fr-form-group', false()),让表单恢复可编辑状态
  • 给按钮加显示条件:仅当is-submitted = true()时显示,避免未提交时按钮无效占位。

关键细节

  • 必须绑定「表单提交成功」事件,而非按钮点击事件,确保只有提交操作真正成功后才触发后续逻辑
  • 所有动作加条件判断是核心,能防止重复提交时触发错误逻辑

内容的提问来源于stack exchange,提问作者Pete Atkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:37:58