vue:el-form-item lable设置无校验的必填标识

本文介绍在Vue中使用Element UI组件库时如何设置表单的必填项标识。通过两种方法实现:一是直接使用`:required='true'`属性;二是通过自定义`label-slot`来添加红色星号标识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • List item

vue笔记

el-form-item lable设置无校验的必填标识
1.使用:required=“true” 属性

<el-col :span="8">
	<el-form-item label="手机号码" prop="phone" :required="true">
   		<el-input v-model="user.phone" style="width:300px"/>
    </el-form-item>
</el-col>

2.使用 label slot 自定义

<el-col :span="8">
	<el-form-item label="手机号码" prop="phone">
	// 这里放入 label slot 进行自定义
	<label slot="label"><span style="color:red">*</span>&nbsp;&nbsp;手机号码</label>
   		<el-input v-model="user.phone" style="width:300px"/>
    </el-form-item>
</el-col>
<template> <my-form ref="forRef" :model="data"> <my-form-item label="产品名称" prop="name" :rules="[ { required: true, message: '请输入产品名称', trigger: 'blur' }, { maxLength: 10, message: '产品名称不能大于10' }, { validator: mycheck(data.name)} ]"> <my-input v-model="data.name" /> </my-form-item> <my-form-item label="产品描述" prop="age" :rules="[ { required: true, message: '请输入产品描述', trigger: 'blur' }, { maxLength: 200, maxMessage: '姓名不能超过200个汉字' } ]"> <my-input v-model="data.age"/> </my-form-item> <my-form-item label="产品分类" prop="category" :rules="[{ required: true, message: '请选择性产品分类', trigger: 'change' }]"> <my-select v-model="data.category"> <my-option v-for="item in sexOptions" :label="item.lable" :value="item.value" /> </my-select> </my-form-item> <my-form-item label="产品单价" prop="price" :rules="[ { required: true, message: '请输入产品单价', trigger: 'blur' }, { min: 0, message: '产品单价不能小于0', trigger: 'blur' }, { max: 10000, message: '产品单价不能超过10000', trigger: 'blur' } ]" > <my-input v-model="data.price"/> </my-form-item> <my-form-item label="产品库存" prop="stock" :rules="[ { required: true, message: '请输入产品库存', trigger: 'blur' }, { min: 0, message: '产品库存不能小于0', trigger: 'blur' }, { max: 10000, message: '产品库存不能超过10000', trigger: 'blur' } ]" > <my-input v-model="data.stock"/> </my-form-item> <my-form-item label="生产厂家" prop="manufacturer" :rules="[ { required: true, message: '请输入生产厂家', trigger: 'blur' }, ]"> <my-input v-model="data.manufacturer"/> </my-form-item> <my-form-item label="产地"> <my-select v-model="data.originProvince" placeholder="省" prop="originProvince" :rules="[{ required: true, message: '请选择性省份', trigger: 'change' }]"> <my-option v-for="item in originProvinces" :label="item.lable" :value="item.value" /> </my-select> <my-select v-model="data.originCity" placeholder="市" prop="originCity" :rules="[{ required: true, message: '请选择市', trigger: 'change' }]"> <my-option v-for="item in originCitys" :label="item.lable" :value="item.value" /> </my-select> </my-form-item> <my-form-item label="发货地"> <my-select v-model="data.shippingProvince" placeholder="省" prop="originProvince" :rules="[{ required: true, message: '请选择性省份', trigger: 'change' }]"> <my-option v-for="item in originProvinces" :label="item.lable" :value="item.value" /> </my-select> <my-select v-model="data.shippingCity" placeholder="市" prop="originCity" :rules="[{ required: true, message: '请选择市', trigger: 'change' }]"> <my-option v-for="item in shippingCities" :label="item.lable" :value="item.value" /> </my-select> </my-form-item> <!-- // 复杂空件暂时不做 --> <div class="data"> <el-form-item label="生产日期:" required> <el-col :span="11"> <el-form-item prop="createAt"> <el-date-picker v-model="data.createAt" type="date" aria-label="Pick a date" placeholder="Pick a date" style="width: 100%;" /> </el-form-item> </el-col> </el-form-item> </div> </my-form> {{ data }} <button @click="checkForm">提交</button> <button @click="clearForm">清空</button> </template> <script setup> import myForm from '@/components/myForm'; import myFormItem from '@/components/myForm/myFormItem'; import MyInput from '@/components/input'; import MySelect from '@/components/mySelect'; import MyOption from '@/components/mySelect/myOption'; const forRef = ref() const sexOptions = reactive([{ lable: "男", value: 1 }, { lable: "吉", value: 2 }]) const originProvinces = reactive([{ lable: "辽宁", value: 1 }, { lable: "吉林", value: 2 }]) // 省份数据 const originCitys = reactive([{ lable: "沈阳", value: 1 }, { lable: "长春", value: 2 }]) // 城市数据 const shippingCities = reactive([{ lable: "沈阳", value: 1 }, { lable: "长春", value: 2 }]) // 发货地城市数据 const data = reactive({ name: "", age: "", category: "", price: "", stock: "", manufacturer: "", originProvince: '',  originCity: '',  shippingProvince: '',  shippingCity: '', createAt: "", formCheck: null }) function mycheck(item) { if (item == 1) { return { check: false, message: "不能等于1" } } else { return { check: true } } } function checkForm() { data.formCheck = forRef.value.validate() } function clearForm() { forRef.value.resetField() } const rules = reactive({ name: [ { required: true, message: '请输入产品名称', trigger: 'blur' }, { max: 10, message: '长度超过10位', trigger: 'blur' }, ], description: [ { required: true, message: '请输入产品描述', trigger: 'blur' }, { max: 200, message: '长度超过200位', trigger: 'blur' }, ], category: [ { required: true, message: '请选择产品分类', trigger: 'change' }, ], }); </script> <style scoped> .data{ margin-left: 40px; } </style> 自定义校验函数为什么不成功
最新发布
07-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值