2021-05-06 antd中的Form表单异步验证

本文探讨了在antd库中如何实现Form表单的异步验证。通过利用Form组件的asyncValidate功能,可以有效地校验用户输入的数据,确保在提交前数据的正确性和完整性。
摘要由CSDN通过智能技术生成

antd中的Form表单异步验证:

<Form.Item
    rules:[
        {
            // 普通验证
            required:true,    
            message:'该字段是必须的' 
        },
        {
            // 自定义验证  rule是规则对象,包含字段名称,以及字段类型校验器等等,val为输入框内容
            validator函数接收promise作为返回值
            validator:(rule,val){
                if(...){
                     return Promise.resolve() // 不触发验证
                }else{
                    return Promise.reject(new Error('提示信息')) // 触发验证
                }
            }                                                    
        },
        {
            // 异步验证 多了一个callback函数
            validator:(rule,val,callback){
                这里进行异步操作,下面以promise举例
                const p1 = new Promise((resolve,reject)=>{
                    setTimeOut(()=>{
                        const dataNum=Date.now()
                        if(dataNum%2===0){
                
灵活好用的jq表单验证,自己封装可按照验证需求添加验证方法,不需要修改验证整体结构,内含使用说明。 var arr = new Array(); /* */ //用户验证 arr[0] = new XQValidation(); arr[0].XChecksetcont("3-12长度,字母,数字,下划线", "", "表单不能为空", "验证失败", "此用户已存在", "此用户可以注册"); arr[0].posturl("/FormValidation/ajax/ajax-validation.asmx/user_isNull", "name"); arr[0].check("tname", "td1", "checkusername", true, true); //密码验证 arr[1] = new XQValidation(); arr[1].XChecksetcont("6-20长度,字母,数字,和其他符号", "ok", "表单不能为空", "wrong", "表单不能为空"); arr[1].check("tpass", "td2", "checkpassword", true, false); //邮箱验证 arr[2] = new XQValidation(); arr[2].XChecksetcont("正确邮箱", "ok", "表单不能为空", "wrong"); arr[2].check("tmail", "td3", "checkemail", true, false); //联系方式验证 arr[3] = new XQValidation(); arr[3].XChecksetcont("正确手机,非必须", "ok", "表单不能为空", "wrong"); arr[3].check("tmobile", "td4", "checkcontactway", true, false); //QQ验证 arr[4] = new XQValidation(); arr[4].XChecksetcont("qq,非必须", "ok", "表单不能为空", "wrong"); arr[4].check("tqq", "td5", "checkqq", false, false); //验证验证 arr[5] = new XQValidation(); arr[5].XChecksetcont("", "ok", "表单不能为空", "wrong"); arr[5].check("tcode", "td6", "checknull", true, false); //重复密码验证 arr[6] = new XQValidation(); arr[6].XChecksetcont("", "", "表单不能为空", "密码不匹配"); arr[6].check("tapass", "td7", "checkpassword_", true, false); /* *summary:提交表单验证 */ function formok() { for (var i = 0; i < arr.length; i++) {//循环遍历验证对象 if (!arr[i].getstate()) { arr[i].alertwrong(); return false } } //判断两次输入的密码是否一样 if (!chkapass($("tapass").value)) { arr[6].alertwrong(); return false; } return true; }
如果您想在使用Ant Design的ModalForm组件时,将自定义组件传递给ModalForm组件,并在ModalForm组件使用该自定义组件,并在其他页面使用onFinish异步方法,可以按照以下步骤进行操作: 1. 在自定义组件定义一个onFinish方法,该方法将在ModalForm组件调用并处理表单数据。 2. 将自定义组件作为ModalForm组件的一个表单项传递,并将onFinish方法作为自定义组件的一个属性进行传递。 3. 在其他页面,定义一个异步的onFinish方法,并将其作为ModalForm组件的onFinish属性进行传递。 下面是一个示例代码,您可以参考这个示例来理解如何在Ant Design使用自定义组件和ModalForm组件: ``` // 自定义组件 MyComponent.js import React from 'react'; import { Form, Input } from 'antd'; const MyComponent = ({ onFinish }) => { return ( <Form onFinish={onFinish}> <Form.Item name="name" label="名字"> <Input /> </Form.Item> <Form.Item name="age" label="年龄"> <Input /> </Form.Item> </Form> ); }; export default MyComponent; // 在页面调用 ModalForm.js import React from 'react'; import { Modal, Button } from 'antd'; import MyComponent from './MyComponent'; const ModalForm = ({ onFinish }) => { return ( <Modal title="标题" visible={true} footer={null}> <MyComponent onFinish={onFinish} /> </Modal> ); }; export default ModalForm; // 其他页面 OtherPage.js import React from 'react'; import { Modal, Button } from 'antd'; import ModalForm from './ModalForm'; const OtherPage = () => { const onFinish = async (values) => { console.log(values); // 异步处理表单数据 }; return ( <div> <Button type="primary" onClick={() => setVisible(true)}> 打开 Modal </Button> <ModalForm onFinish={onFinish} /> </div> ); }; export default OtherPage; ``` 在这个示例代码,我们定义了一个自定义组件MyComponent,该组件包含一个Form表单,并且定义了一个onFinish方法,用于处理表单数据。 然后,在ModalForm组件,我们将自定义组件作为一个表单项传递,并将onFinish方法作为自定义组件的一个属性进行传递。 最后,在其他页面,我们定义了一个异步的onFinish方法,并将其作为ModalForm组件的onFinish属性进行传递。这样,在ModalForm组件,当用户提交表单时,onFinish方法将被调用,并且表单数据将被传递到外部的onFinish方法进行异步处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值