字段交互状态管理概览
精确控制表单字段的可编辑状态,实现条件式表单交互逻辑
此示例演示如何使用kinlink API控制表单字段的启用和禁用状态。通过条件逻辑、状态联动和用户权限控制,实现灵活的表单交互体验和数据保护机制。
状态控制核心功能
- 🔓 字段启用控制:动态启用特定字段供用户编辑
- 🔒 字段禁用机制:保护关键字段免受意外修改
- 🔄 状态联动:基于其他字段值控制字段可编辑性
- 🎯 权限管理:根据用户角色控制字段访问权限
- 📝 数据保护:防止敏感数据被误操作
- ⚡ 实时响应:即时响应用户操作调整字段状态
关键功能
- 动态启用指定字段
- 动态禁用指定字段
- 批量控制多个字段的启用状态
- 基于条件的字段状态管理
代码示例
/**
* 示例4: 字段启用禁用控制
* 功能:动态控制表单字段的启用和禁用状态
*/
(function () {
kinlink.events.on(kinlink.FormEvents.FORM_LOADED, () => {
try {
// 禁用指定字段
kinlink.formApi.disableField('单行文本框_10');
kinlink.formApi.disableField('日期_2');
// 启用指定字段(如果之前被禁用)
kinlink.formApi.enableField('文字列__1行__0');
kinlink.formApi.enableField('文字列__1行__1');
// 批量禁用多个字段
const fieldsToDisable = ['单行文本框_8', '单行文本框_9'];
fieldsToDisable.forEach((fieldCode) => {
kinlink.formApi.disableField(fieldCode);
});
// 创建切换按钮来演示动态控制
const toggleButton = document.createElement('button');
toggleButton.textContent = '切换字段状态';
toggleButton.style.margin = '10px 0';
toggleButton.style.padding = '8px 16px';
toggleButton.style.backgroundColor = '#e74c3c';
toggleButton.style.color = 'white';
toggleButton.style.border = 'none';
toggleButton.style.borderRadius = '4px';
toggleButton.style.cursor = 'pointer';
let isDisabled = true;
toggleButton.addEventListener('click', () => {
if (isDisabled) {
kinlink.formApi.enableField('单行文本框_10');
kinlink.formApi.enableField('日期_2');
toggleButton.textContent = '禁用字段';
toggleButton.style.backgroundColor = '#e74c3c';
} else {
kinlink.formApi.disableField('单行文本框_10');
kinlink.formApi.disableField('日期_2');
toggleButton.textContent = '启用字段';
toggleButton.style.backgroundColor = '#27ae60';
}
isDisabled = !isDisabled;
});
// 添加按钮到表单
const formElement = document.querySelector('.ant-form') || document.body;
formElement.insertBefore(toggleButton, formElement.firstChild);
} catch (error) {
console.error('控制字段启用禁用失败:', error);
}
});
})();使用说明
要使用此功能,只需将代码复制到您的kinlink自定义JavaScript中。根据您的表单字段,修改代码中的字段代码。您可以根据业务逻辑和权限要求控制字段的启用和禁用状态。
完整代码请下载查看:
4-字段启用禁用控制.js
注意事项
禁用的字段仍会保留其值并参与表单提交。如果需要阻止某些值的提交,请结合字段验证或提交前数据处理。
API参考
此示例使用了以下kinlink API:
kinlink.events.on(eventName, callback)- 注册事件监听器kinlink.FormEvents.FORM_LOADED- 表单加载完成事件kinlink.formApi.enableField(fieldCode)- 启用指定字段kinlink.formApi.disableField(fieldCode)- 禁用指定字段