On this page
code
只读
rtSurvey 中的只读字段允许您显示受访者无法编辑的信息。此功能在显示预填数据、计算结果或整个调查过程中应保持不变的信息时特别有用。
基本用法
要使字段只读,请在 XLSForm 中使用 read_only 列:
| type | name | label | read_only | default |
|---------|------|----------------------|-----------|---------|
| integer | num | 患者编号为: | yes | 5 |
在此示例中,患者编号设置为 5,受访者无法更改。
将只读与默认值结合
只读字段通常与默认值结合使用,以显示预定或计算的信息:
| type | name | label | read_only | default |
|---------|----------|---------------------|-----------|----------------|
| text | username | 已登录用户: | yes | ${current_user}|
| date | today | 今天的日期: | yes | today() |
这里,用户名和当前日期显示但无法编辑。
rtSurvey 特有功能
条件只读
rtSurvey 通过条件逻辑扩展了只读功能:
| type | name | label | read_only |
|---------|----------|-----------------|--------------------------|
| integer | age | 年龄: | ${role} = 'viewer' |
| text | comments | 评论: | selected(${status}, 'closed') |
在这些示例中:
- 只有当用户角色为"viewer"时,“年龄"字段才是只读的。
- 当状态为"closed"时,“评论"字段变为只读。
动态只读状态
rtSurvey 允许动态更改只读状态:
| type | name | label | read_only |
|-----------|----------|----------| ----------------------|
| text | address | 地址: | ${edit_mode} = 'false' |
这允许您根据某些条件或用户操作在可编辑和只读模式之间切换。
使用只读字段的最佳实践
- 清晰性:通过视觉提示或标签清楚地标明哪些字段是只读的。
- 一致性:在整个调查中一致地使用只读字段。
- 验证:即使只读字段无法编辑,也要将其纳入数据验证流程。
- 性能:对只读字段中的复杂计算要谨慎,因为它们可能影响表单加载时间。
- 可访问性:确保只读字段对屏幕阅读器进行了适当标记。
高级技术
计算只读字段
使用只读字段显示基于其他回答的计算:
| type | name | label | read_only | calculation |
|-----------|----------|-----------------|-----------|------------------------|
| calculate | bmi | BMI: | yes | ${weight} / (${height} * ${height}) |
显示历史数据
只读字段可以显示来自之前调查或外部来源的数据:
| type | name | label | read_only | default |
|---------|----------------|------------------------|-----------|----------------------------|
| text | last_visit_date| 上次就诊日期: | yes | ${pulldata('visits', 'date', 'id', ${patient_id})} |
数据管理注意事项
- 只读字段包含在数据导出中,通常带有表示其只读状态的标志。
- 更新现有记录时,只读字段保留其原始值,除非通过后端明确覆盖。
移动应用行为
- rtSurvey 移动应用遵守只读设置,包括条件只读逻辑。
- 离线模式完全支持只读功能,包括动态和计算只读字段。
已知限制
- 某些复杂的动态只读条件可能对低端设备产生轻微性能影响。
- 只读字段可能无法阻止所有形式的导出数据文件中的数据操纵,因此建议对关键数据进行服务器端验证。
只读字段故障排除
- 字段意外可编辑:检查
read_only列或条件逻辑中的语法错误。 - 计算值不更新:验证计算逻辑并确保所有引用字段的名称正确。
- 性能问题:优化复杂计算或考虑显示只读数据的替代方法。
此页面有帮助吗?