I’m trying to validate user’s input before they submit the form. How can I pass input field values to my validateInput function and if it returns false trigger and apply the following properties in the field hasFeedback
, validateStatus
and help
const Demo = () => { const [form] = form.useForm(); const onFinish = (values) => { console.log("Success:", values); }; const onFinishFailed = (errorInfo) => { console.log("Failed:", errorInfo); }; const validateInput = (input) => { const isEmailFormatValid = `regex...`; var check = input.match(validateFormat); return check }; return ( <Form form={form} name="basic" initialValues={{ remember: true, }} onFinish={onFinish} onFinishFailed={onFinishFailed} > <Form.Item label="Email" name="email" / * hasFeedback validateStatus="warning" help="Invalid email format" */ rules={[ { required: true, message: "Please input your email!", }, ]} > <Input /> </Form.Item> <Form.Item label="Password" name="password" rules={[ { required: true, message: "Please input your password!", }, ]} > <Input.Password /> </Form.Item> <Form.Item> <Button block type="primary" htmlType="submit"> Submit </Button> </Form.Item> </Form> ); };
Advertisement
Answer
<Form.Item>
prop rules
is an array so you can add many rules to it.
If you want to check if the email input is not empty at the same time a valid email, you can do this:
<Form.Item label="Email" name="email" rules={[ { required: true, message: "Please input your email!", }, { pattern: /your email regex here/, message: "Invalid email format", }, ]} > <Input /> </Form.Item>
No need for extra validation function. The error will automatically show if not meet the specified regex.
You can see all the rules of ant design input here