给输入框加校验规则

点击查看代码
{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}
  />
)}
const invalidRows = selectedRows.filter(row => requiredFields.some(field => { const value = row[field.key];
// 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;

})
);

posted @ 2025-12-14 23:06  牛久安  阅读(9)  评论(0)    收藏  举报