Vue-Ant Design Vue-普通及自定义校验

这段时间在使用Ant Design Vue进行项目的前端部分开发,进行一个记录,分享…

Ant Design Vue

Ant Design Vue是 Ant Design 3.X 的 Vue 实现,开发和服务于企业级后台产品。在GitHub上可以找到几个Ant Design的Vue组件。不过相比较而言,Ant Design Vue更胜一筹。Ant Design Vue共享Ant Design of React设计工具体系,实现了所有Ant Design of React的组件,支持现代浏览器和 IE9 及以上(需要 polyfills)。可以让熟悉Ant Design的在使用Vue时,很容易的上手。
nodejsnpm包括Ant Design Vue安装什么的就不说了,可以百度,之后有时间我会写一篇关于这一套东西的安装教程,关于Ant Design Vue,可以直接查看官方文档:https://vue.ant.design
下面说一下关于Ant Design Vue中的表单校验及自定义校验。

自定义校验

先给一张Ant Design Vue得form表单中不同类型的校验场景图,看看是否有你需要的:
在这里插入图片描述
官方提供了 validateStatus, help ,hasFeedback 等属性,你可以不需要使用 Form.creategetFieldDecorator,自己定义校验的时机和内容。

  • validateStatus: 校验状态,可选 ‘success’, ‘warning’, ‘error’, ‘validating’。
  • hasFeedback:用于给输入框添加反馈图标。
  • help:设置校验文案。

说明一点: 当你使用Ant Design Vue的使用,经过 Form.create 包装的组件将会自带 this.form 属性
this.form 提供的 关于校验的API如下 :

方法说明类型
validateFields校验并获取一组输入域的值与 Error,若 fieldNames 参数为空,则校验全部组件Function([fieldNames: string[]], [options: object], callback: Function(errors, values))

然后看下Form.Item的参数设置(主要看关于校验的):

参数说明类型默认值
extra额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。string/slot
hasFeedback配合 validateStatus 属性使用,展示校验状态图标,建议只配合 Input 组件使用。booleanfalse
help提示信息,如不设置,则会根据校验规则自动生成string/slot
validateStatus校验状态,如不设置,则会根据校验规则自动生成,可选:‘success’ ‘warning’ ‘error’ ‘validating’string

最后是校验规则设置:
在这里插入图片描述
相关的api及参数设置介绍完乐,下面上实例

实例

写一个简单的例子

form表单代码:

<a-form style="max-width: 500px; margin: 40px auto 0;" @submit="handleSubmit" :form="form">
        <a-form-item
                label="密码"
                :labelCol="{span: 5}"
                :wrapperCol="{span: 19}"
                class="stepFormText"
                hasFeedback
        >
          <a-input
                  v-decorator="[
                  'password',
                  {rules: [{ required: true, message: '请输入密码' },{validator: handlePass}]}
                ]"
                  name="password"
          />
        </a-form-item>
        <a-form-item
                label="确认密码"
                :labelCol="{span: 5}"
                :wrapperCol="{span: 19}"
                class="stepFormText"
                hasFeedback
        >
          <a-input
                  v-decorator="[
                  'confirm_password',
                  {rules: [{ required: true, message: '请输入确认密码' },{validator: handleConfirmPass}]}
                ]"
                  name="confirm_password"
          />
        </a-form-item>
        <a-form-item :wrapperCol="{span: 19, offset: 5}">
          <a-button :loading="loading" type="primary"  htmlType="submit">提交</a-button>
        </a-form-item>
      </a-form>

进行一下说明,以确认密码的校验为例:

<a-input
                  v-decorator="[
                  'confirm_password',
                  {rules: [{ required: true, message: '请输入确认密码' },{validator: handleConfirmPass}]}
                ]"
                  name="confirm_password"
          />

rules中为一个数组,每一项就是一个校验规则,第一项规则容易理解,但是{validator: handleConfirmPass}是什么的,我们通过上面的校验规则设置(红框处)可以发现,这是当你设置自定义校验的时候需要这么写。注意:callback 必须被调用
handleConfirmPass 其实就是自定义校验的校验方法。
js代码:

<script>
export default {
    data () {
        return {
            labelCol: {
                xs: { span: 24 },
                sm: { span: 7 }
            },
            wrapperCol: {
                xs: { span: 24 },
                sm: { span: 13 }
            },
            password: '',
            // form
            form: this.$form.createForm(this)
        }
    },
    methods: {
        handlePass(rule,value,callback){
            this.password = value
            callback()
        },
        handleConfirmPass(rule,value, callback){
            if (this.password && this.password !== value) {
                callback('两次密码输入不一致!')
            }
            // Note: 必须总是返回一个 callback,否则 validateFieldsAndScroll 无法响应
            callback()
        },
        handleSubmit (e) {
            e.preventDefault()
            this.form.validateFields((err, values) => {
                if (!err) {
                	console.log(values)
                }
            })

        }
    }
}
</script>

效果图如下:
1.空值提交
在这里插入图片描述
2.自定义校验规则生效
在这里插入图片描述
好了,这就是关于Ant Design Vue的普通及自定义校验的简单使用。

Ant Design Vue 是一个非常受欢迎的 UI 组件库,它提供了丰富的表单组件,包括输入框、下拉选择框等等。要实现动态添加表单必填校验,可以按照以下步骤进行操作: 1. 首先,引入 Ant Design Vue 的 Form 组件和相应的验证规则模块,例如 `required` 必填规则。 2. 在 Vue 的 data 中定义一个表单对象,包含需要动态添加的表单控件的值。 3. 在模板中使用 Ant Design Vue 的 Form 组件,并使用 v-model 指令将表单对象和控件的值进行绑定。 4. 使用 v-for 指令遍历需要动态添加的表单控件,通过一个数组来提供控件的模板。 5. 在表单控件的模板中,使用 :rules 属性绑定验证规则,例如 `:rules="[{ required: true, message: '该字段为必填项' }]` 6. 在模板中提供一个按钮或其他交互方式,用来触发动态添加表单控件的操作。 7. 当点击按钮时,通过修改表单对象的属性或者添加新的属性,实现动态添加表单控件。 8. 提交表单时,通过调用 validate 方法对表单进行校验,这会触发相关的验证规则。 9. 根据校验结果,可以在模板中展示错误信息或者处理其他逻辑。 需要注意的是,动态添加表单必填校验时,需要在动态添加表单控件的同时,将相应的验证规则也添加到表单对象中。另外,为了方便校验和错误信息的展示,建议使用对应的验证规则模块和提示文本。 这样,通过上述步骤,就可以实现 Ant Design Vue 动态添加表单必填校验了。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

millet109

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

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

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

打赏作者

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

抵扣说明:

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

余额充值