表单脚本 API
本文档详细说明表单脚本中支持的所有 API,包括其功能、参数和使用示例。
脚本结构
表单脚本支持以下事件函数:
// 示例脚本
function onChange(api, value) {
// 字段值变化时触发
// api 包含所有可用的 API 方法
}
function onLoad(api, formData) {
// 表单加载时触发
// api 包含所有可用的 API 方法
}
function onFocus(api, value) {
// 字段获得焦点时触发
// api 包含所有可用的 API 方法
}
function onBlur(api, value) {
// 字段失去焦点时触发
// api 包含所有可用的 API 方法
}
支持的 API
1. getValue(fieldCode)
功能:获取指定字段的值
参数:
fieldCode:字段编码
返回值:字段的值
示例:
function onChange(api, value) {
const otherValue = api.getValue('otherField');
console.log('Other field value:', otherValue);
}
2. setValue(fieldCode, value)
功能:设置指定字段的值
参数:
fieldCode:字段编码value:要设置的值
示例:
function onChange(api, value) {
if (value === 'yes') {
api.setValue('otherField', 'enabled');
} else {
api.setValue('otherField', 'disabled');
}
}
3. setValues(values)
功能:同时设置多个字段的值
参数:
values:包含字段编码和对应值的对象
示例:
function onLoad(api, formData) {
api.setValues({
'field1': 'default1',
'field2': 'default2',
'field3': 'default3'
});
}
4. setVisible(fieldCode, visible)
功能:设置字段的可见性(可以用下文的 show 和 hide 函数更方便快捷)
参数:
fieldCode:字段编码visible:是否可见(true/false)
示例:
function onChange(api, value) {
if (value === 'show') {
api.setVisible('targetField', true);
} else {
api.setVisible('targetField', false);
}
}
5. setReadOnly(fieldCode, readOnly)
功能:设置字段是否只读
参数:
fieldCode:字段编码readOnly:是否只读(true/false)
示例:
function onChange(api, value) {
if (value === 'locked') {
api.setReadOnly('targetField', true);
} else {
api.setReadOnly('targetField', false);
}
}
6. setRequired(fieldCode, required)
功能:设置字段是否必填
参数:
fieldCode:字段编码required:是否必填(true/false)
示例:
function onChange(api, value) {
if (value === 'yes') {
api.setRequired('detailsField', true);
} else {
api.setRequired('detailsField', false);
}
}
7. setPlaceholder(fieldCode, placeholder)
功能:设置字段的占位符
参数:
fieldCode:字段编码placeholder:占位符文本
示例:
function onLoad(api, formData) {
api.setPlaceholder('nameField', '请输入姓名');
api.setPlaceholder('emailField', '请输入邮箱地址');
}
8. addValidation(fieldCode, rule)
功能:添加验证规则
参数:
fieldCode:字段编码rule:验证规则对象
示例:
function onLoad(api, formData) {
api.addValidation('emailField', {
type: 'email',
message: '请输入有效的邮箱地址'
});
}
9. clearValidations(fieldCode)
功能:清除字段的所有验证规则
参数:
fieldCode:字段编码
示例:
function onChange(api, value) {
if (value === 'noValidation') {
api.clearValidations('targetField');
}
}
10. setPattern(fieldCode, pattern, message)
功能:设置字段的正则验证模式
参数:
fieldCode:字段编码pattern:正则表达式或字符串message:验证失败时的提示信息(可选)
示例:
function onLoad(api, formData) {
api.setPattern('phoneField', /^1[3-9]\d{9}$/, '请输入有效的手机号码');
}
11. setValidator(fieldCode, validator)
功能:设置字段的自定义验证器
参数:
fieldCode:字段编码validator:验证函数,返回错误信息或 null
示例:
function onLoad(api, formData) {
api.setValidator('passwordField', (value) => {
if (value.length < 6) {
return '密码长度不能少于6位';
}
return null;
});
}
12. validateField(fieldCode)
功能:验证指定字段(动态添加验证函数后,会自动触发验证,动态添加场景不需要调用该 API)
参数:
fieldCode:字段编码
示例:
async function onChange(api, value) {
try {
await api.validateField('emailField');
console.log('验证通过');
} catch (error) {
console.log('验证失败:', error);
}
}
13. getFormData()
功能:获取所有表单数据
返回值:包含所有字段值的对象
示例:
function onLoad(api, formData) {
const allData = api.getFormData();
console.log('所有表单数据:', allData);
}
14. getFormState()
功能:获取表单状态
返回值:表单状态('create' | 'edit' | 'detail' | 'batchEdit')
示例:
function onLoad(api, formData) {
const state = api.getFormState();
if (state === 'create') {
console.log('当前是创建模式');
} else if (state === 'edit') {
console.log('当前是编辑模式');
} else {
console.log('当前是详情模式');
}
}
15. show(fieldCode)
功能:显示指定字段(快捷方法,等同于 setVisible(fieldCode, true))
参数:
fieldCode:字段编码
示例:
function onChange(api, value) {
if (value === 'show') {
api.show('targetField');
}
}
16. hide(fieldCode)
功能:隐藏指定字段(快捷方法,等同于 setVisible(fieldCode, false))
参数:
fieldCode:字段编码
示例:
function onChange(api, value) {
if (value === 'hide') {
api.hide('targetField');
}
}
完整示例
示例 1:根据选择值控制字段显示
function onChange(api, value) {
if (value === 'option1') {
api.show('field1');
api.hide('field2');
} else if (value === 'option2') {
api.hide('field1');
api.show('field2');
} else {
api.hide('field1');
api.hide('field2');
}
}
function onLoad(api, formData) {
// 初始化时根据默认值设置字段可见性
if (formData.option === 'option1') {
api.show('field1');
api.hide('field2');
} else if (formData.option === 'option2') {
api.hide('field1');
api.show('field2');
}
}
示例 2:动态设置字段值和验证
function onChange(api, value) {
// 根据输入值设置其他字段
if (value) {
api.setValue('description', `This is a description for ${value}`);
api.setRequired('description', true);
} else {
api.setValue('description', '');
api.setRequired('description', false);
}
}
function onLoad(api, formData) {
// 设置初始验证规则
api.setPattern('email', /^[^\s@]+@[^\s@]+\.[^\s@]+$/, '请输入有效的邮箱地址');
api.setValidator('password', (value) => {
if (!value) return '密码不能为空';
if (value.length < 6) return '密码长度不能少于6位';
return null;
});
}