avue自定义表单扩展正则校验问题

基于avue的自定义表单低代码开发遇到问题和解决方案
在这里插入图片描述
基于avue的低代码开发平台,优势在于生成的json完全符合avue crud的配置规范,也就是说通过avue的低代码开发能够快速生成表单,并且实现对表单数据的增删改查。
首先要解决的问题:
1 组件扩展
自带的组件并不能完全满足我们的需求,有些组件属性配置冗余,我们都需要自行扩展。
1.1 扩展组件
在代码中找到fieldsConfig.js在这里面配置需要扩展的组件,如果不想和现有的组件冲突,需要新定义组件类型。

{
        type: "dept",
        label: "组织机构",
        icon: "icon-tree",
        span: 24,
        display: true,
        dicOption: "remote",
        dicMethod: "get",
        dicUrl: "",
        dicData: [],
        parent: true,
        props: {
          label: "deptName",
          value: "id",
          desc: "desc",
        },
      },

这就扩展了一种dept的组件类型,但是你又想利用tree或者cascader类展示,这时候就需要做一个展示类型指向现有的组件类型。

            if (item.type === "dept") {
              item.type = "tree";
            }
            if (item.type === "city") {
              item.type = "cascader";
            }

这样就能很好的利用现有的avue配置支持去实现,一个新组件。

2 以下这些都是组件除了通用配置之外的单个组件的自定义配置。
我们在这里面就可以实现对自己的组件自定义属性控制。
在这里插入图片描述
这样就可以对自己的自定义组件进行一些属性进行控制。

2 现在讲一下现在系统的一些bug
2.1 正则校验的bug,正则校验的问题主要是因为

 <monaco-editor
          v-model="option"
          keyIndex="generate"
          height="82%"
          :read-only="true"
        ></monaco-editor>

使用这个编辑器,在预览json中,正则pattern对象无法正确显示,因为并不是字符串,导致正则并不能很好的显示在item的rule配置项中,而是显示一个{}, 到时提交给后台的数据json中正则这块无法获取到正则表达式。
2.2 解决办法:
首先配置的时候,需要配正则表达式的非 // 格式,例如 /^\d{1,6}/应该配置成 ^\d{1,6},而且我们获取到的时候是个字符串,其中\d会被处理成\d,这样在json中就可以保存这个正则表达式字符串。

其次,在表单预览时或者后面使用表单的时候,我们需要把字符串取出来,把其中的类似\d变成\d,这里要使用replace正则替换的方式,然后利用RegExp 实例化成为正则表单式来使用,这样才会在预览表单和使用表单式生效。

最后,关于正则这块的还有一个坑,就是我们在输入正则表达式时,这个验证消息是系统分配的,例如 某某字段不符合数据格式,这个提示非常不友好,用户并不知道如何填写什么格式的数据,这个时候可以利用placeHolder配置,然后动态的配置到pattern的message配置项中。

 this.validator.pattern = {
          pattern: val,
          message: `${this.data.label}格式不匹配`,
        };

在这里插入图片描述
当然你也可以利用字段提示或者placeHolder直接提示。

3 关于校验时候的提示文字和校验字段不匹配的问题
在这里插入图片描述
造成这块的原因是,因为这个required必填和这个正则输入,系统是分两个方法监听,并且去生成校验规则的,但实际上这两个是联动的,也就是说我们在做正则修改的时候我们要去required的校验规则否则将会被上一次的修改保持不变,同样我们在做requuired也要做对正则做一个校验规则更新。
在这里插入图片描述
这样关于正则校验这块的问题得到解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Ant Design中的Form表单中,可以使用`rules`属性来进行正则校验。具体实现步骤如下: 1. 在需要进行校验表单项中,设置`rules`属性,值为一个数组,数组中每个元素为一个校验规则对象,校验规则对象包括`pattern`属性和`message`属性,分别表示正则表达式和校验失败的提示信息。例如: ```jsx <Form.Item label="用户名" name="username" rules={[ { pattern: /^[a-zA-Z0-9_]{4,16}$/, message: '用户名必须由4-16位字母、数字或下划线组成', }, ]} > <Input /> </Form.Item> ``` 2. 在表单提交时进行校验。可以通过`validateFields`方法来获取所有表单项的值,并进行校验。如果校验通过,执行提交操作;否则,提示用户校验失败的原因。例如: ```jsx const onFinish = (values) => { form .validateFields() .then(() => { // 校验通过,执行提交操作 console.log('提交表单:', values); }) .catch((errorInfo) => { // 校验失败,提示用户 console.log('校验失败:', errorInfo); }); }; ``` 注意:在使用`validateFields`方法时,需要将表单组件用`Form.useForm`包装起来,并将`form`对象传递给表单组件的`form`属性。例如: ```jsx const MyForm = () => { const [form] = Form.useForm(); const onFinish = (values) => { form .validateFields() .then(() => { // 校验通过,执行提交操作 console.log('提交表单:', values); }) .catch((errorInfo) => { // 校验失败,提示用户 console.log('校验失败:', errorInfo); }); }; return ( <Form form={form} onFinish={onFinish}> {/* ... */} </Form> ); }; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaolongyu3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值