Ant Design Vue表单校验失效问题

form表单添加校验失效

1.  核对文档版本与使用版本是否相同

2.  在 Ant Design Vue 中, 1.x 与 2.x以上版本form表单验证格式不同,根据自己使用的版本选择相应样式

3.  在2.x以上版本的表单验证中name属性是必须的,在1.x版本中prop属性是必须的

4. 1.x中使用 FormModel  (支持 v-model 检验)(版本:1.5.0+)表单代码

        prop属性对应rules中的字段名

<template>
  <a-form-model
    :model="form"
    :rules="rules"
    :label-col="{ span: 8 }"
    :wrapper-col="{ span: 16 }"
  >
    <a-form-model-item label="名称" prop="title">
      <a-input v-model="form.title" placeholder="请输入文字" />
    </a-form-model-item>
    <a-form-model-item label="顺序" prop="sort">
      <a-input v-model="form.sort" placeholder="请输入数字" />
    </a-form-model-item>
  </a-form-model>
</template>

<script>
export default {
  data() {
    return {
      //表单
      form: {
        title: "",
        sort: "",
      },
      // 校验
      rules: {
        title: [
          { required: true, message: "请输入名称", trigger: "blur" },
          { max: 5, message: "最多不超过五个字", trigger: "blur" },
        ],
        sort: [
          { required: true, message: "请输入顺序", trigger: "blur" },
          {
            pattern: /^(0|[1-9][0-9]*)(\.\d+)?$/,
            message: "只允许输入正数",
            trigger: "blur",
          },
        ],
      },
    };
  },
};
</script>

5. 2.x中from表单

        name属性对应rules中的字段名

<template>
  <a-form
    :model="form"
    :rules="rules"
    ref="ruleForm"
    :label-col="{ span: 8 }"
    :wrapper-col="{ span: 16 }"
  >
    <a-form-item label="名称" name="title">
      <a-input v-model="form.title" placeholder="请输入文字" />
    </a-form-model-item>
    <a-form-item label="顺序" name="sort">
      <a-input v-model="form.sort" placeholder="请输入数字" />
    </a-form-model-item>
  </a-form-model>
</template>

<script>
export default {
  data() {
    return {
      //表单
      form: {
        title: "",
        sort: "",
      },
      // 校验
      rules: {
        title: [
          { required: true, message: "请输入名称", trigger: "blur" },
          { max: 5, message: "最多不超过五个字", trigger: "blur" },
        ],
        sort: [
          { required: true, message: "请输入顺序", trigger: "blur" },
          {
            pattern: /^(0|[1-9][0-9]*)(\.\d+)?$/,
            message: "只允许输入正数",
            trigger: "blur",
          },
        ],
      },
    };
  },
};
</script>

### 回答1: Ant Design Vue 组件支持使用 `rules` 属性对表单进行校验校验规则是一个对象数组,每个对象包含一个验证规则,如: ``` rules: [ { required: true, message: '请输入内容', }, { pattern: /^[a-zA-Z0-9]+$/, message: '只能是字母或数字', }, ], ``` 在表单元素上添加 `:rules="rules"` 即可启用校验。 详情请参考 Ant Design Vue 官方文档:https://vue.ant.design/components/form-cn/ ### 回答2: Ant Design Vue是一个基于Vue.js的UI组件库,它提供了许多优秀的表单校验功能,可以方便地用于我们的项目开发中。下面我们来详细介绍一下Ant Design Vue表单校验。 1. 校验规则 首先我们需要在表单项中设置校验规则。Ant Design Vue提供了丰富的校验规则,例如:required、email、url、number等。我们只需要在对应的表单项上添加对应的校验规则即可。 例如,下面是一个包含邮箱校验规则的表单: ```html <a-form-model :model="formData"> <a-form-model-item label="邮箱" prop="email"> <a-input v-model="formData.email" /> </a-form-model-item> <a-form-model-item> <a-button type="primary" @click="handleSubmit">提交</a-button> </a-form-model-item> </a-form-model> ``` ```javascript export default { data() { return { formData: { email: '' }, rules: { email: [{ required: true, message: '邮箱不能为空', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱格式', trigger: ['blur', 'change'] }] } } }, methods: { handleSubmit() { this.$refs.form.validate(valid => { if(valid) { //表单校验通过,执行提交操作 } else { //表单校验不通过,提示错误信息 } }) } } } ``` 2. 自定义校验规则 除了Ant Design Vue提供的已有校验规则之外,我们还可以自定义校验规则。例如,下面是一个自定义校验规则的表单: ```html <a-form-model :model="formData" :rules="rules"> <a-form-model-item label="密码" prop="password"> <a-input type="password" v-model="formData.password" /> </a-form-model-item> <a-form-model-item> <a-button type="primary" @click="handleSubmit">提交</a-button> </a-form-model-item> </a-form-model> ``` ```javascript export default { data() { return { formData: { password: '' }, rules: { password: [{ required: true, message: '密码不能为空', trigger: 'blur' }, { pattern: /^[a-zA-Z]\w{5,17}$/, message: '密码必须以字母开头,长度在6~18之间,只能包含字母、数字和下划线', trigger: ['blur', 'change'] }] } } }, methods: { handleSubmit() { this.$refs.form.validate(valid => { if(valid) { //表单校验通过,执行提交操作 } else { //表单校验不通过,提示错误信息 } }) } } } ``` 3. 校验触发方式 在Ant Design Vue中,我们可以设置校验的触发方式,例如:blur、change、submit等。其中,blur表示在表单项失去焦点时触发校验,change表示在表单值变化时触发校验,submit表示在点击提交按钮时触发校验。 例如,下面是一个设置校验触发方式的表单: ```html <a-form-model :model="formData" :rules="rules"> <a-form-model-item label="用户名" prop="username"> <a-input v-model="formData.username" /> </a-form-model-item> <a-form-model-item label="密码" prop="password"> <a-input type="password" v-model="formData.password" /> </a-form-model-item> <a-form-model-item> <a-button type="primary" @click="handleSubmit">提交</a-button> </a-form-model-item> </a-form-model> ``` ```javascript export default { data() { return { formData: { username: '', password: '' }, rules: { username: [{ required: true, message: '用户名不能为空', trigger: 'blur' }], password: [{ required: true, message: '密码不能为空', trigger: 'blur' }] } } }, methods: { handleSubmit() { this.$refs.form.validate(valid => { if(valid) { //表单校验通过,执行提交操作 } else { //表单校验不通过,提示错误信息 } }) } } } ``` 以上就是Ant Design Vue表单校验功能的介绍。在实际的项目开发中,合理利用Ant Design Vue表单校验功能,可以有效地减少前端开发人员的工作量,并且提高项目的代码质量。 ### 回答3: Ant Design Vue是一个非常流行的UI框架,它提供了很多常用组件和布局,其中就包括了表单组件。在实际的开发中,我们需要对表单中用户输入的数据进行校验,以便保证数据的有效性和安全性。Ant Design Vue提供了丰富的表单校验功能,使得开发者可以轻松实现各种校验需求。 Ant Design Vue表单校验的常用方法包括: 1. 表单验证规则 Ant Design Vue提供了validate() API来验证表单控件,我们可以使用表单验证规则来定义每个表单项的校验规则。例如,我们可以使用required、min、max、pattern等属性来定义必填、最小值、最大值、以及正则表达式等校验规则,对于一些比较复杂的校验规则,我们也可以使用validator来自定义校验函数。 2. 表单项反馈信息 在表单校验失败时,我们需要向用户提供反馈信息,让用户更好地理解错误原因。Ant Design Vue提供了多种反馈方式,包括Tooltip、Message等组件。我们可以通过设置validateTrigger、help、rules等属性来实现这些反馈方式。 3. 表单校验状态管理 表单校验状态管理是Ant Design Vue表单校验的重要组成部分。我们可以通过设置validateStatus、hasFeedback等属性来管理表单项的校验状态。同时,Ant Design Vue还提供了getFieldsError、getFieldValue、resetFields等API,方便我们进行表单校验状态的查询、更新和重置。 总的来说,Ant Design Vue表单校验功能非常强大,它使得表单校验变得简单、高效和灵活。开发者可以根据自己的需求灵活地配置和使用这些校验功能,从而达到更好的用户体验和数据安全性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值