给输入框加校验规则
点击查看代码
{getFieldDecorator('dataOwner', {
initialValue: formData.dataOwner,
rules: [
{
validator: (rule, value, callback) => {
if (!value) return callback();
// 防止手写多个邮箱
if (typeof value === 'string' && /[,;,;\s]/.test(value.trim())) {
return callback('Data Owner 只能选择一位!');
}
// 可选:限制必须是下拉里的邮箱
const inList = (AllUserInfo || []).some(u => u.email === value);
if (!inList) {
return callback('请从下拉列表中选择一位 Data Owner');
}
callback();
},
},
],
})(
<AutoComplete
dataSource={(AllUserInfo || []).map(user => (
<Option key={user.email} value={user.email}>
{user.email}
</Option>
))}
style={{ width: '90%' }}
filterOption={(inputValue, option) =>
option.props.children
.toUpperCase()
.indexOf(inputValue.toUpperCase()) !== -1
}
disabled={isDisplayMode}
/>
)}
// 1)为空:必填不通过
if (!value) return true;
// 2)Data Owner 额外做“只能一个邮箱”的格式校验
if (field.key === 'dataOwner' && typeof value === 'string') {
const trimmed = value.trim();
// 多个邮箱分隔符
if (/[,;;、]/.test(trimmed)) return true;
// @ 数量大于 1
const atCount = (trimmed.match(/@/g) || []).length;
if (atCount > 1) return true;
}
return false;
})
);
浙公网安备 33010602011771号