当前位置: 首页 > news >正文

关于vue2使用elform的rules校验

在使用vue2开发项目的时候使用element组件的el-form大多数情况都需要用到必填项校验
举个栗子:

<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"><el-form-item label="活动名称" prop="name"><el-input v-model="ruleForm.name"></el-input></el-form-item><el-form-item label="活动区域" prop="region"><el-select v-model="ruleForm.region" placeholder="请选择活动区域"><el-option label="区域一" value="shanghai"></el-option><el-option label="区域二" value="beijing"></el-option></el-select></el-form-item><el-form-item><el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button><el-button @click="resetForm('ruleForm')">重置</el-button></el-form-item>
</el-form>
<script>export default {data() {return {ruleForm: {name: '',region: '',},rules: {name: [{ required: true, message: '请输入活动名称', trigger: 'blur' },{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }],region: [{ required: true, message: '请选择活动区域', trigger: 'change' }],}};},methods: {submitForm(ruleForm) {this.$refs[ruleForm].validate((valid) => {if (valid) {alert('submit!');} else {console.log('error submit!!');return false;}});},resetForm(ruleForm) {this.$refs[ruleForm].resetFields();}}}
</script>

这里我们的表单里有‘活动名称(输入框)’和‘活动区域(下拉框)’两个选项,我们在<el-form>这里写了

:rules="rules"

这就代表我们这个el-form表单的校验是根据rules来的,而在下面<el-form-item>里我们写了'prop="xxx"',这里的属性为rules里需要校验的字段名,也就是data里定义的

rules: {name: [{ required: true, message: '请输入活动名称', trigger: 'blur' },{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }],region: [{ required: true, message: '请选择活动区域', trigger: 'change' }],}

*这里需要注意的是我们prop里的字段和rules里的字段名一定要对应上,这样el-form表单的校验才会生效

然后我们在点击确定的时候调方法进行校验即可

this.$refs[ruleForm].validate((valid) => {if (valid) {alert('submit!');} else {console.log('error submit!!');return false;}});

这里的[ruleForm]要跟上面el-form表单的ref的命名保持一致

更新:

如果遇到需要动态加校验
我们只需要在el-form-item这里加上

:rules="定义的变量 ? rules.name : []"

像这样

  <el-form-item label="活动名称" prop="name":rules="定义的变量 ? rules.name: []"><el-input v-model="ruleForm.name"></el-input></el-form-item>

这个定义的变量是用来动态判断是否需要加校验的,这个值你只需要放在你需要判断是否需要加校验的地方就行了

*这里有个点需要注意,单独加的校验有可能会在你输入/选择选项之后还是提示校验未通过

这个时候我们需要在输入框/下拉框的change事件里再单独执行一下校验就可以了,比如像这样:

change方法名() {this.$refs.ruleForm.validateField('name'); // 需要判断的那个选项的prop,要对应rules里定义的值},

这样就实现了对一个选项动态加判断校验

附加element的官网地址:Element - The world's most popular Vue UI framework

http://www.lqws.cn/news/599923.html

相关文章:

  • 第8章路由协议,RIP、OSPF、BGP、IS-IS
  • Zephyr RTOS 信号量 (Semaphore)
  • SpringMVC--使用RESTFul实现用户管理系统
  • 鸿蒙学习——开发中遇到的问题记录
  • Windows VMWare Centos Docker部署Springboot + mybatis + MySql应用
  • Embeddings模型
  • IOday2--7.1
  • 工作中常用的Git操作命令(一)
  • 电脑键盘不能打字了怎么解决 查看恢复方法
  • Wisdom SSH 与宝塔面板:深度对比剖析
  • P1312 [NOIP 2011 提高组] Mayan 游戏
  • 将POD指定具体机器上运行
  • ip网络基础
  • 睿抗-2025年江西省第三题
  • python+uniapp基于微信小程序的流浪动物救助领养系统nodejs+java
  • 3.2.2、CAN总线-过滤器的使用
  • SQL学习笔记6
  • sqlmap学习笔记ing(1.Easy_SQLi(时间,表单注入))
  • 位运算经典题解
  • 高并发场景下,TCP/UDP丢包的隐藏陷阱
  • c语言学习_初识c语言21
  • 伊吖学C笔记(7、地址、指针、指针数组)
  • 面试拷打-20250701
  • 新版Android Studio默认展示类成员的问题解决
  • CPU缓存一致性
  • wifi无线调试连接手机远程控制 安卓 免root控制充电
  • FFmpeg中TS与MP4格式的extradata差异详解
  • GPIO详解:不仅仅是输入输出那么简单
  • 【MyBatis保姆级教程下】万字XML进阶实战:配置指南与深度解析
  • 【AI 时代的网络爬虫新形态与防护思路研究】