Element UI 表单【详解】-- 表单校验,表单元素排列在一行,常用表单元素等

简介: Element UI 表单【详解】-- 表单校验,表单元素排列在一行,常用表单元素等

el-form 表单

<el-form ref="formRef" :model="formData" label-width="80px" size="mini">
    <el-form-item label="姓名"
                  prop='name'
                  :rules="{ required: true, message: '不能为空'}"
    >
        <el-input v-model="formData.name" style="width: 200px"></el-input>
    </el-form-item>
    <el-form-item label="性别">
        <el-select v-model="formData.gender" placeholder="请选择">
            <el-option
                    v-for="item in genderList"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
            ></el-option>
        </el-select>
    </el-form-item>
    <el-form-item>
        <el-button type="primary" @click="save">保存</el-button>
        <el-button @click="clear">重填</el-button>
    </el-form-item>
</el-form>

清空表单数据

this.$refs.formRef.resetFields();

表单校验

在 el-form-item 标签上

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

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

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

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

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

清除表单校验 clearValidate

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

校验规则详解  rules

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

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

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

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

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

{ validator: checkAge, trigger: 'blur' }
const checkAge = (rule, value, callback) => {
    if (value < 18) {
        callback(new Error('必须年满18岁'));
    } else {
        callback();
    }
}

异步校验

如访问接口,判断用户名是否已存在。  checkUsername为请求后端接口

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' }]"

更多常用正则表达式见链接  https://blog.csdn.net/weixin_41192489/article/details/113618913

表单元素排列在一行

添加  :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>

下拉选择

<el-select v-model="formData.gender" placeholder="请选择">
    <el-option
            v-for="item in genderList"
            :key="item.value"
            :label="item.label"
            :value="item.value"
    ></el-option>
</el-select>

单选

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

多选

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

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

开关

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

选择日期

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

选定日期的选择范围

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

选择时间

selectableRange限制可选时间范围

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

选择日期范围

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

<el-date-picker
        unlink-panels
        value-format="yyyy-MM-dd"
        v-model="formData.validDate"
        type="daterange"
        range-separator="至"
        start-placeholder="开始日期"
        end-placeholder="结束日期">
</el-date-picker>


目录
相关文章
|
4月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。 伪类分为两种(以及新增的伪类选择器): UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。 :hover 结构化伪类:会在标记中存在某种结构上的关系时 例如: 某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。 :not和:target(CSS3新增的两个特殊的伪类选择器)
260 1
|
9月前
|
开发者 容器
【HarmonyOS Next之旅】ArkTS语法(二) -> 动态构建UI元素
当开发者创建自定义组件,并想对该组件添加特定功能时(例如在自定义组件中添加一个点击跳转操作)。为解决此问题,引入了@BuilderParam装饰器,此装饰器修饰的属性值可为@Builder装饰的函数,开发者可在初始化自定义组件时对此属性进行赋值,为自定义组件增加特定的功能。@BuilderParam装饰器用于修饰自定义组件内函数类型的属性(例如:@BuilderParam noParam: () => void),并且在初始化自定义组件时被@BuilderParam修饰的属性必须赋值。
254 11
|
7月前
|
Web App开发 前端开发 JavaScript
Element UI框架中自定义input组件的placeholder样式。
确保这些样式在你的应用程序CSS文件中定义,且该文件已正确加载到项目中。通过以上方法,可以控制Element UI组件中input的placeholder样式,使其满足特定的设计要求。这些更改都是基于CSS伪元素进行的,因此并不会对DOM结构产生改变,保持了原有结构的简洁和高效。
618 12
|
7月前
|
存储 JavaScript 前端开发
element ui <el-date-picker> 设置展示当前月
在 Element UI 中,使用 `el-date-picker` 的 `value-format` 属性可将日期值格式化为指定字符串。设置 `type=&quot;month&quot;` 时,绑定值默认为 Date 对象,通过 `value-format=&quot;yyyy-MM&quot;` 可将其转为如 &quot;2023-05&quot; 格式,便于存储与处理。
1311 0
|
8月前
|
定位技术 容器
48.[HarmonyOS NEXT RelativeContainer案例五] 精确表单布局:辅助线定位技术打造专业级UI
在HarmonyOS NEXT的UI开发中,表单是常见且重要的界面元素。创建对齐精确、布局合理的表单需要精细的定位控制。RelativeContainer提供的辅助线(Guideline)功能,为表单布局提供了强大的支持。本教程将详细讲解如何使用RelativeContainer的辅助线功能实现精确的表单布局,帮助你掌握这一专业级UI技术。
217 7
|
8月前
|
JavaScript 测试技术 Python
UI自动化测试中的元素等待机制解析
在UI自动化测试中,元素定位失败常因页面存在iframe或缺乏合理等待机制。本文解析三种等待策略及其应用场景:显式等待可精确控制单个元素等待条件,支持自定义轮询;隐式等待全局生效,适合简单页面加载;强制等待仅用于临时调试,正式脚本慎用。通过对比三者执行精度、资源消耗及适用场景,帮助选择最优策略,提升测试效率与稳定性。
|
JavaScript 索引
Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案
Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案
1151 0
|
9月前
|
开发框架 前端开发 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发一
本文介绍了方舟开发框架(ArkUI)及其两种开发范式:基于ArkTS的声明式开发范式和类Web开发范式。ArkUI是用于构建HarmonyOS应用界面的UI框架,提供极简UI语法和基础设施。声明式开发范式使用ArkTS语言,以组件、动画和状态管理为核心,适合复杂团队协作;类Web开发范式采用HML、CSS、JavaScript三段式开发,适用于简单界面应用,贴近Web开发者习惯。文中还概述了两者的架构和基础能力,帮助开发者选择合适的范式进行高效开发。
297 15
|
9月前
|
编解码 前端开发 Java
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发三
本文介绍了基于声明式UI范式的图形绘制与动画效果实现方法,涵盖绘制图形、添加动画效果及常见组件说明三部分内容。在绘制图形部分,详细讲解了如何通过Circle组件为食物成分表添加圆形标签,以及使用Path组件结合SVG命令绘制自定义图形(如应用Logo)。动画效果部分则展示了如何利用animateTo实现闪屏动画,包括渐出、放大效果,并设置页面跳转;同时介绍了页面间共享元素转场动画的实现方式。最后,文章列举了声明式开发范式中的各类组件及其功能,帮助开发者快速上手构建复杂交互页面。
334 11
|
5月前
|
存储 开发者 容器
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
本文介绍了ArkTS语言中的Class类、泛型、接口、模块化、自定义组件及状态管理等核心概念,并结合代码示例讲解了对象属性、构造方法、继承、静态成员、访问修饰符等内容,同时涵盖了路由管理、生命周期和Stage模型等应用开发关键知识点。
441 1
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例

热门文章

最新文章