提交流程控制概览
完整的表单提交生命周期管理,实现数据预处理、验证和结果处理
此示例演示如何使用kinlink API在表单提交前后处理数据。这允许您在提交表单前自动格式化或补充数据,以及在提交后执行特定操作,如显示成功消息或处理结果。
提交流程核心环节
- 🔄 表单初始化:页面加载完成时的UI初始化
- ⚡ 提交前处理:数据验证、格式化、补全操作
- 📤 数据传输:安全的API代理请求处理
- ✅ 提交后处理:结果反馈、状态更新、错误处理
- 🎯 用户体验:实时状态提示和操作引导
关键功能
- 监听表单提交前事件进行数据预处理
- 监听表单提交后事件处理结果反馈
- 自动补全和格式化表单数据
- 集成外部API调用和错误处理
代码示例
/**
* 示例9: 表单提交前后处理(自动修改数据示例)
* 功能:在表单提交前自动修改数据,如自动补全、格式化、添加新字段
* 所有提示统一用 showMessage
*/
(function () {
// 表单加载时初始化
kinlink.events.on(kinlink.FormEvents.FORM_LOADED, () => {
try {
// 创建提交按钮
const submitButton = document.createElement('button');
submitButton.type = 'button';
submitButton.textContent = '测试提交表单';
submitButton.style.margin = '10px 0';
submitButton.style.padding = '8px 16px';
submitButton.style.backgroundColor = '#3498db';
submitButton.style.color = 'white';
submitButton.style.border = 'none';
submitButton.style.borderRadius = '4px';
submitButton.style.cursor = 'pointer';
submitButton.addEventListener('click', () => {
// 触发表单提交
kinlink.formApi.submit();
});
// 添加按钮到表单
const formElement = document.querySelector('.ant-form') || document.body;
formElement.insertBefore(submitButton, formElement.firstChild);
} catch (error) {
console.error('初始化提交按钮失败:', error);
}
});
// 表单提交前处理(自动修改数据)
kinlink.events.on(kinlink.FormEvents.BEFORE_SUBMIT, (data) => {
try {
const { values } = data;
// 自动补全:如果没有填写公司名,自动补全为"未填写"
if (!values['单行文本框_10']) {
values['单行文本框_10'] = '未填写';
kinlink.formApi.showMessage(
'info',
'公司名未填写,已自动补全为"未填写"',
3,
);
}
// 自动格式化:手机号去除空格
if (values['文字列__1行__2']) {
values['文字列__1行__2'] = values['文字列__1行__2'].replace(/\s+/g, '');
kinlink.formApi.showMessage('info', '手机号已自动去除空格', 3);
}
// 添加新字段:提交时间戳
values['_autoSubmitTime'] = new Date().toISOString();
kinlink.formApi.showMessage('info', '已自动添加提交时间戳', 3);
// 允许提交
return true;
} catch (error) {
console.error('表单提交前处理失败:', error);
kinlink.formApi.showMessage('error', '提交前处理发生错误', 3);
return false;
}
});
// 表单提交后处理
kinlink.events.on(kinlink.FormEvents.AFTER_SUBMIT, (data) => {
try {
const { success, result } = data;
console.log('表单提交结果:', success, result);
if (success) {
kinlink.formApi.showMessage('success', '表单提交成功!', 3);
} else {
kinlink.formApi.showMessage('error', '表单提交失败,请稍后重试', 5);
console.error('提交失败原因:', result);
}
} catch (error) {
console.error('表单提交后处理失败:', error);
kinlink.formApi.showMessage('error', '提交后处理发生错误', 3);
}
});
})();使用说明
要使用此功能,只需将代码复制到您的kinlink自定义JavaScript中。您可以根据业务需求在提交前后添加自定义的数据处理逻辑,如验证、格式化、API调用等。
完整代码请下载查看:
9-表单提交处理.js
注意事项
在BEFORE_SUBMIT事件中返回false会阻止表单提交。请确保您的处理逻辑能够正确处理各种异常情况,避免影响正常的表单提交流程。
API参考
此示例使用了以下kinlink API:
kinlink.events.on(eventName, callback)- 注册事件监听器kinlink.FormEvents.FORM_LOADED- 表单加载完成事件kinlink.FormEvents.BEFORE_SUBMIT- 表单提交前事件kinlink.FormEvents.AFTER_SUBMIT- 表单提交后事件kinlink.formApi.submit()- 手动触发表单提交kinlink.formApi.showMessage(type, message, duration)- 显示消息提示