title: 泛微 E9 表单联动:字段显示/隐藏与必填控制 created: 2026-04-21 updated: 2026-04-21 type: snippet tags: [e9, js, ecode, validation, link]
字段联动控制 (RTO/RPO 案例)
场景
在【服务器申请/变更流程】中,当“是否映射外网端口”选择“是”时: 1. 显示 RTO 和 RPO 字段。 2. 将这两个字段设为必填。 3. 当选择“否”时,隐藏字段并清空值(防止校验报错)。
完整代码
jQuery(document).ready(function() {
// 配置字段 ID
const FIELD_OUTER_PORT = 'field1234'; // 是否映射外网端口
const FIELD_RTO = 'field5678'; // 恢复时间目标 RTO
const FIELD_RPO = 'field9012'; // 恢复点目标 RPO
const form = window.WfForm || window.parent.WfForm;
function handleLinkage() {
const val = form.getFieldValue(FIELD_OUTER_PORT);
const isOuterPort = (val === '1'); // 根据实际选项值调整
if (isOuterPort) {
form.showField(FIELD_RTO);
form.showField(FIELD_RPO);
form.setFieldRequiredMark(FIELD_RTO, true);
form.setFieldRequiredMark(FIELD_RPO, true);
} else {
form.hideField(FIELD_RTO);
form.hideField(FIELD_RPO);
form.setFieldRequiredMark(FIELD_RTO, false);
form.setFieldRequiredMark(FIELD_RPO, false);
form.setFieldValue(FIELD_RTO, "");
form.setFieldValue(FIELD_RPO, "");
}
}
form.bindFieldChangeEvent(FIELD_OUTER_PORT, function(obj, id, value) {
handleLinkage();
});
setTimeout(handleLinkage, 500);
});
setTimeout(handleLinkage, 500);
});
``## 关键点
1. **form.hideField()**:隐藏字段(同时会移除必填校验)。
2. **form.setFieldRequiredMark()**:强制设置必填红星。
3. **form.setFieldValue()**:隐藏字段后务必清空值,否则提交时若旧值为空可能会触发非空校验报错。
4. **setTimeout`**:流程表单加载有延迟,建议加 500ms 延迟确保初始化逻辑在数据回填后执行。