当前位置:   article > 正文

Element UI 表单【详解】-- 表单校验_elementui表单校验

elementui表单校验

el-form-item 标签上

  1. 添加prop属性,值为字段名  prop='name'
  2. 添加字段校验规则
  1. <el-form-item label="姓名"
  2. prop='name'
  3. :rules="{ required: true, message: '不能为空'}"
  4. >

对整个表单数据进行校验 validate

  1. save() {
  2. this.$refs.formRef.validate((valid) => {
  3. if (valid) {
  4. alert('通过了表单校验,可以保存啦!')
  5. }
  6. });
  7. }

对单个表单数据进行校验 validateField

  1. this.$refs.formRef.validateField('name',err => {
  2. if(!err){
  3. alert('姓名校验通过啦!')
  4. }
  5. })

清除表单校验 clearValidate

  1. this.$nextTick(() => {
  2. this.$refs.formRef.clearValidate();
  3. });

校验规则详解  rules

若只有一条校验规则,绑定对象即可

:rules="{ required: true, message: '不能为空'}"

若有多条校验规则,则绑定对象数组

  1. :rules="[
  2. { required: true, message: '请输入活动名称', trigger: 'blur' },
  3. { type: 'date', required: true, message: '请选择时间', trigger: 'change' },
  4. { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'change' },
  5. { pattern: /^[\u4e00-\u9fa5]{0,}$/, message: '只能输入汉字', trigger: 'change' }
  6. ]"

自定义校验(含异步校验)

 { validator: checkAge, trigger: 'blur' }
  1. const checkAge = (rule, value, callback) => {
  2. if (value < 18) {
  3. callback(new Error('必须年满18岁'));
  4. } else {
  5. callback();
  6. }
  7. }
  1. rules: {
  2. principalopen: [
  3. {
  4. // 是否必填 没有这个就没有前面红点
  5. required: true,
  6. // 自定义验证规则
  7. validator: checkAge,
  8. // 触发事件
  9. trigger: 'blur'
  10. }
  11. ]
  12. },

required属性——是否必填

  • true 表单元素的值不能为空,表单元素前会有红色*号标记

  • false 表单元素的值可以为空

message属性——校验失败后的提示信息

触发校验后,若校验失败,提示信息会在表单元素下方显示

 trigger属性——校验触发时机 

trigger属性用于指定校验触发时机,但是并不是所有的验证项都可以被这样触发

  • 'blur' 表单元素失去焦点时触发校验
  • 'change' 表单元素的值发生变化时触发校验

type属性——值的类型

string: 字符串(默认值)
number: 数字
boolean: 布尔值
method: 函数
regexp: 正则表达式
integer: 整数
float: 浮点数
array: 数组
object:对象
enum: 枚举类型,可以参考百度资料-枚举类型
date: 日期类型
url: URL类型,如 https://www.baidu.com/
hex: 文件格式类型,如  :020000040000FA 
email: 邮箱类型,如 3652452@qq.com
any: 任意类型
 

pattern属性——正则校验

:rules="[{ pattern: /^[\u4e00-\u9fa5]{0,}$/, message: '只能输入汉字', trigger: 'change' }]"

表单元素排列在一行

添加  :inline="true" 即可

 <el-form ref="formRef" :model="formData" label-width="80px" size="mini" :inline="true">

常用表单元素

所有表单元素,都要使用  el-form-item 标签包裹

单行输入框

<el-input v-model="formData.name" style="width: 200px"></el-input>

多行输入框

<el-input type="textarea" v-model="formData.remark"></el-input>

下拉选择

  1. <el-select v-model="formData.gender" placeholder="请选择">
  2. <el-option
  3. v-for="item in genderList"
  4. :key="item.value"
  5. :label="item.label"
  6. :value="item.value"
  7. ></el-option>
  8. </el-select>

单选

  1. <el-radio-group v-model="formData.gender">
  2. <el-radio v-for="(item,index) in genderList" :key="index" :label="item.label"></el-radio>
  3. </el-radio-group>

多选

特别注意:因多选表单元素的值为数组,所以必须初始化其值为 []

  1. formData: {
  2. hobby: []
  3. },
  1. <el-checkbox-group v-model="formData.hobby">
  2. <el-checkbox v-for="item in hobbyList" :key="item.value" :label="item.value">{{item.label}}</el-checkbox>
  3. </el-checkbox-group>
  1. hobbyList: [
  2. {
  3. label: "编程",
  4. value: '1'
  5. },
  6. {
  7. label: "读书",
  8. value: '2'
  9. },
  10. ]

开关

<el-switch v-model="formData.show"></el-switch>

选择日期

  1. <el-date-picker
  2. :picker-options="pickerOptions"
  3. value-format="yyyy-MM-dd"
  4. v-model="formData.birthday"
  5. type="date"
  6. placeholder="选择日期">
  7. </el-date-picker>

选定日期的选择范围

  1. pickerOptions: {
  2. disabledDate(time) {
  3. //此条为设置禁止用户选择今天之前的日期,包含今天。
  4. // return time.getTime() <= (Date.now()-(24 * 60 * 60 * 1000));
  5. //此条为设置禁止用户选择今天之前的日期,不包含今天。
  6. return time.getTime() <= (Date.now()-(24 * 60 * 60 * 1000));
  7. }
  8. },

选择时间

 selectableRange限制可选时间范围

  1. <el-time-picker v-model="formData.time" placeholder="选择时间"
  2. value-format="HH:mm:ss"
  3. :picker-options="{selectableRange: '18:30:00 - 20:30:00'}"
  4. >

选择日期范围

 unlink-panels 用于解除左右日期面板的联动

  1. <el-date-picker
  2. unlink-panels
  3. value-format="yyyy-MM-dd"
  4. v-model="formData.validDate"
  5. type="daterange"
  6. range-separator="至"
  7. start-placeholder="开始日期"
  8. end-placeholder="结束日期">
  9. </el-date-picker>

更多常用正则表达式见链接  正则表达式 RegExp【详解】_朝阳39的博客-CSDN博客

原文:Element UI 表单【详解】-- 表单校验,表单元素排列在一行,常用表单元素等_el-form表单如何让个别表单项属于行内_朝阳39的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/607333
推荐阅读