antdv form表单,一个<a-form-model-item>校验两个变量属性

一般情况下,<a-form-model-item只能校验一个变量

<a-form-model-item prop="name" label="姓名">
   <a-input v-model="form.name" />
</a-form-model-item>

但是有时候,一个<a-form-model-item可能有多个输入框,而且都必须检验,可以如下写法

<a-form-model-item label="地址" required>
   <a-form-model-item prop="province">
     <a-input v-model="form.province" />
   </a-form-model-item>
   <a-form-model-item prop="city">
     <a-input v-model="form.city" />
   </a-form-model-item>
 </a-form-model-item>

注意的是,最外层的<a-form-model-item 需要有required属性和label,子元素的<a-form-model-item 只有一个prop属性

完整代码如下

<template>
  <div>
    <a-form-model
      ref="form"
      :model="form"
      :rules="rules"
      :label-col="{ span: 5 }"
      :wrapper-col="{ span: 12 }"
    >
    <a-row>
        <a-col :span="6">
          <a-form-model-item prop="name" label="姓名">
              <a-input v-model="form.name" />
          </a-form-model-item>
        </a-col>
      </a-row>
      <a-row>
        <a-col :span="6">
          <a-form-model-item label="地址" required>
            <a-form-model-item prop="province">
              <a-input v-model="form.province" />
            </a-form-model-item>
            <a-form-model-item prop="city">
              <a-input v-model="form.city" />
            </a-form-model-item>
          </a-form-model-item>
        </a-col>
      </a-row>
    </a-form-model>
    <a-button @click="handleSubmit">handleSubmit</a-button>
  </div>
</template>
  
  <script>
export default {
  data() {
    return {
      formLayout: "horizontal",
      form: {
        name:'',
        province: "",
        city: "",
      },
      rules: {
        name: [{ required: true, message: "输入姓名" }],
        province: [{ required: true, message: "输入省" }],
        city: [{ required: true, message: "输入市" }],
      },
    };
  },
  methods: {
    handleSubmit(e) {
      this.$refs.form.validate((err, values) => {
        if (!err) {
          console.log("Received values of form: ", values);
        }
      });
    },
  },
};
</script>
<style lang="scss" scoped>
/deep/.ant-form-item-children {
  display: flex;
}
</style>

在这里插入图片描述

``` <div v-for="(question, index) in questions" :key="index"> <!-- 单选框 --> <el-form-item v-if="question.question_type === 1" :label="question.question_text" :prop="`${question.question_code}`" :rules="[ { required: true, message: '请选择', trigger: 'change'} ]"> <el-radio-group v-model="formData[question.question_code]" :disabled='isUpdate'> <el-radio v-for="option in question.options" :key="option.option_code" :value="option.option_code">{{ option.option_text }}</el-radio> </el-radio-group> </el-form-item> <!-- 复选框 --> <el-form-item v-else-if="question.question_type === 2" :label="question.question_text" :prop="`${question.question_code}`" :rules="[ { type: 'array', required: true, message: '请至少选择一项', trigger: 'change'} ]"> <el-checkbox-group v-model="formData[question.question_code]" :disabled='isUpdate'> <el-checkbox v-for="option in question.options" :key="option.option_code" :value="option.option_code">{{ option.option_text }}</el-checkbox> </el-checkbox-group> </el-form-item> </div> <el-form ref="formRefs" :model="info" :rules="rules" label-width="80px" @submit.prevent=""> <el-row :gutter="16"> <el-col :span="6"> <el-form-item label="姓名" prop="name"> <el-input clearable v-model="info.name" :disabled='isUpdate' /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="性别" prop="gender"> <el-input clearable v-model="info.gender" :disabled='isUpdate' /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="年龄" prop="age"> <el-input clearable v-model="info.age" :disabled='isUpdate' /> </el-form-item> </el-col> </el-row> <el-row :gutter="16"> <el-col :span="10"> <el-form-item label="身份证号" prop="id_no"> <el-input clearable maxlength="18" v-model="info.id_no" :disabled='isUpdate' /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="联系方式" prop="phone_no"> <el-input clearable maxlength="11" v-model="info.phone_no" :disabled='isUpdate' /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="调查方式" prop="visit_type"> <el-radio-group v-model="info.visit_type" :disabled='isUpdate'> <el-radio value="自助" label="自助" /> <el-radio value="电话" label="电话" /> <el-radio value="微信" label="微信" /> </el-radio-group> </el-form-item> </el-col> </el-row> </el-form>```vue3如何实现formRef与formRefs校验全部通过才可提交function submit() {}
03-08
<template> <el-container> <el-main> <el-form ref="form1" style="max-width: 600px" label-width="auto" status-icon :model="user" :rules="rules"> <el-form-item label="账号" prop="name"> <el-input v-model="user.name" /> </el-form-item> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="user.password" /> </el-form-item> <el-form-item> <el-checkbox v-model="user.rememberMe">记住我</el-checkbox> </el-form-item> <el-form-item> <el-button type="primary" @click="login()">登录</el-button> </el-form-item> </el-form> </el-main> </el-container> </template> <script setup> import { ref, reactive } from 'vue' import { getCurrentInstance } from 'vue' import { doPost } from '../../utils/ajax' import {ElMessage} from 'element-plus' //定义一个响应式的user对象 const user = reactive({ id: 0, name: '', password: 'sss', note: '', rememberMe: false }) //定义校验规则 const rules = { name: [ { required: true, message: '账号不能为空', trigger: 'blur' }, //trigger 表示在什么时候触发 ], password: [ { required: true, message: '密码不能为空', trigger: 'blur' }, { min: 3, max: 10, message: '长度在3到10个字符', trigger: 'blur' } ] } const { proxy } = getCurrentInstance() //取到当前vue对应的组件实例 function login() { proxy.$refs.form1.validate((valid) => { if (valid) { var formData = new FormData() formData.append('name', user.name) formData.append('password', user.password) formData.append('rememberMe', user.rememberMe) doPost("/login", formData).then(res => { if (res.data.code == 200) { ElMessage({ message: '登录成功', type: 'success', }) window.localStorage.removeItem('zhaoshang_token'); window.sessionStorage.removeItem('zhaoshang_token'); if (user.rememberMe) { window.localStorage.setItem('zhaoshang_token', res.data.data) //res.data.data 就是token } else { window.sessionStorage.setItem('zhaoshang_token', res.data.data) } window.location.href = "/main" } else { ElMessage({ message: '登录失败', showClose: true, type: 'warning', }) } }) } else { ElMessage({ showClose: true, message: '验证失败', type: 'error', }) } }) } </script>帮我美化样式
03-17
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值