美文网首页
react+ant.design Form表单校验失败自动滚动到

react+ant.design Form表单校验失败自动滚动到

作者: 燕自浩 | 来源:发表于2022-07-29 19:32 被阅读0次
1. 一定要在Form标签上添加scrollToFirstError属性,触发要使用Button上面的htmlType="submit"方可。注意:Button要在Form标签内部包裹
<Form
  form={form}
  scrollToFirstError
  onFinish={onSubmit}
>
  <Row>
    <Col span={8}>
      <Item
        name="name"
        {...layout}
        label="承租方名称(中)"
        rules={[{ required: true, message: '请输入' }]}
        >
        <Input />
      </Item>
    </Col>
    <Col span={8}>
      <Item {...layout} name="english_name" label="承租方名称(英)">
        <Input />
      </Item>
    </Col>
  </Row>
  <Button loading={loading} type="primary" htmlType="submit">
</Form>

缺点:不一定能准确的滑动到第一个校验不通过的Form表单
优点:使用方便,代码简洁

2.使用Form提供的校验不通过的事件来处理
<Form
  form={form}
  onFinish={onSubmit}
  onFinishFailed={() => {
    // 核心代码
    const errorList = (document as any).querySelectorAll(".ant-form-item-has-error");
    // 由于校验失败ant会自动给失败表单项添加类名,直接获取即可
    errorList[0].scrollIntoView({
      block: "center",
      behavior: "smooth",
    });
  }}
>
  <Row>
    <Col span={8}>
      <Item
        name="name"
        {...layout}
        label="承租方名称(中)"
        rules={[{ required: true, message: '请输入' }]}
        >
        <Input />
      </Item>
    </Col>
    <Col span={8}>
      <Item {...layout} name="english_name" label="承租方名称(英)">
        <Input />
      </Item>
    </Col>
  </Row>
  // 这个时候不一定需要把Button放到Form标签内部也不一定需要使用htmlType属性
  <Button loading={loading} type="primary" htmlType="submit">
</Form>

缺点:需要获取DOM 代码量增多
优点:能够很完美的实现需求同时弥补方案一的短板

总结:如果方案一能满足您的需求建议使用方案一如果不行再使用方案二,首选方案一

相关文章

  • react+ant.design Form表单校验失败自动滚动到

    1. 一定要在Form标签上添加scrollToFirstError属性,触发要使用Button上面的htmlTy...

  • bootstrap直接对form表进行校验

    form表单可以前端进行校验,当然也可以直接采用bootstrap对form表单进行校验如form表单中有 等相关...

  • 第四章2 创建一个普通表单2

    直接按照ui组件对应的属性进行设置就行了,很快就能搭建一个表单,同时还能进行校验 form表单的初始设置,自动校验...

  • CSS文本超出希望右对齐

    在做form表单校验时,经常会出现但是校验失败的提示文本超出校验项宽度的现象: 当超出校验项宽度时,文本换行展示了...

  • flutter 表单Form使用示例

    介绍 flutter提供一套表单校验框架Form,可以通过Form框架一步校验所有表单,非常方便,比较常用的用法是...

  • antd - form表单校验踩坑记录

    form表单校验时,发现提示信息一直不显示 原因:是因为form表单中有用到了自定义校验,但是callback没有...

  • day48-表单校验及日志记录

    1form表单校验 1.1新建form表单 在当前应用下新建一个forms.py文件在创建表单类的时候,form表...

  • Element、iview 表单校验总结

    本文分享主要内容:基本用法、校验方式、部分校验(关联交验)、新增校验、 动态切换校验、校验/重置Form表单、日期...

  • 手动触发表单校验

    触发表单的校验:this.$refs.form.validate(); 触发字段的校验:this.$refs.fo...

  • 登录请求

    表单校验 通过Element中Form组件的表单验证功能[https://element.eleme.cn/#/z...

网友评论

      本文标题:react+ant.design Form表单校验失败自动滚动到

      本文链接:https://www.haomeiwen.com/subject/cmvqwrtx.html