跳转至

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);
});
tion(obj, id, value) { handleLinkage(); });

setTimeout(handleLinkage, 500);

}); ``## 关键点 1. **form.hideField()**:隐藏字段(同时会移除必填校验)。 2. **form.setFieldRequiredMark()**:强制设置必填红星。 3. **form.setFieldValue()**:隐藏字段后务必清空值,否则提交时若旧值为空可能会触发非空校验报错。 4. **setTimeout`**:流程表单加载有延迟,建议加 500ms 延迟确保初始化逻辑在数据回填后执行。