登录 // 表单外部 <_antd 表单校验">
当前位置:   article > 正文

antd 表单验证_antd 表单校验

antd 表单校验

antd 表单验证大致可以分为两种

一种是 提交按钮在 在 Form.Item 内部

一种是提交按钮在 在 Form.Item 外部

  1. // 表单外部
  2. <div className={styles.loginBtn}>
  3. <Button type="primary" onClick={this.onSubmit.bind(this)}>
  4. 登录
  5. </Button>
  6. </div>
  7. // 表单外部
  8. <Form.Item >
  9. <div className={styles.add_book_bottom_btns}>
  10. <Button type='primary' htmlType='submit'>保存</Button>
  11. <Button className={styles.cancle_btn}>取消</Button>
  12. </div>
  13. </Form.Item>

注意 :在 Form.Item 外部的按钮 绑定了 事件处理函数,而在内部的没有,在内部的情况下 如果校验成功 会执行 onFinish 的回调,校验失败,会执行onFinishFail 的回调,相当于antd自动帮我们做了检查。

而没有被 Form.Item 包裹的的Button ,需要借助 FormInstance 里面的 validateFields 进行校验

  1. import { Form } from 'antd';
  2. const Home = (props)=>{
  3. const [form] = Form.useForm();
  4. const handleValidator = async (_, value) => {
  5. let rgx = /^[0-9]*$/;
  6. if(!rgx.test(value)){
  7. return Promise.reject(new Error('请输入数字'));
  8. }
  9. return Promise.resolve();
  10. };
  11. const validate = ()=>{
  12. form.validateFields() .then(values => {
  13. /*
  14. values:
  15. {
  16. username: 'username',
  17. password: 'password',
  18. }
  19. */
  20. })
  21. .catch(errorInfo => {
  22. /*
  23. errorInfo:
  24. {
  25. values: {
  26. username: 'username',
  27. password: 'password',
  28. },
  29. errorFields: [
  30. { name: ['password'], errors: ['Please input your Password!'] },
  31. ],
  32. outOfDate: false,
  33. }
  34. */
  35. });
  36. }
  37. return (
  38. <Form form = {form}>
  39. <Form.Item
  40. label="预警值"
  41. name="warnval"
  42. rules={[
  43. {
  44. validator: handleValidator,
  45. },
  46. ]}
  47. >
  48. <Input maxLength={8}></Input>
  49. </Form.Item>
  50. </Form>
  51. )
  52. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/115569
推荐阅读
相关标签