gpt4 book ai didi

javascript - 为什么数字验证规则在 antd 中不起作用

转载 作者:行者123 更新时间:2023-12-04 01:09:37 27 4
gpt4 key购买 nike

我有一个简单的登录表单,但验证规则为 type: 'number'对于输入项 tn 不起作用。即使我输入一个数字,我也会得到 'tn' is not a valid number' 在控制台中。

    import React from 'react';
import { Form, Input, Button, Checkbox } from 'antd';
import { UserOutlined, LockOutlined } from '@ant-design/icons';
import './style.css';

export const LoginForm = () => {
const onFinish = (values) => {
console.log('Received values of form: ', values);
};

return (
<Form
name="login_form"
className="login-form"
initialValues={{
remember: true,
}}
onFinish={onFinish}
>
<h3 className="main-label">LOG IN</h3>
<Form.Item
name="tn"
rules={[
{
type: 'number',
required: true,
message: 'Wrong number',
},
]}
>
<Input
prefix={<UserOutlined className="site-form-item-icon" />}
placeholder="Enter your tn"
/>
</Form.Item>
<Form.Item
name="password"
rules={[
{
required: true,
message: 'Please input your password',
},
]}
>
<Input
prefix={<LockOutlined className="site-form-item-icon" />}
type="password"
placeholder="Password"
/>
</Form.Item>
<Form.Item>
<Form.Item name="remember" valuePropName="checked" noStyle>
<Checkbox>Remember me</Checkbox>
</Form.Item>
</Form.Item>

...
);
};
我尝试了其他规则,它们运行良好。数字有什么问题?

最佳答案

内置方法不起作用,因为 Ant Design v4 将输入识别为字符串。解决方案是使用正则表达式。

<Form.Item
name="myNumber"
rules={[{
required: true,
message: "A value must be entered",
pattern: new RegExp(/^[0-9]+$/)
}]}
>
<Input
placeholder="x"
maxLength={5}
/>
</Form.Item>
还值得注意的是 getFieldDecorator()从 Ant Design v4 开始,该方法基本上是多余的。他们还应该更好地宣传这一点。
上面的 Regex 模式强制使用整数并不允许使用小数。

关于javascript - 为什么数字验证规则在 antd 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65292936/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com