vue基础之详解ElementUI的表单

目录
  • ElementUI表单
    • 一个简单的案例
    • 表单的主要组件
    • 表单组件的使用
    • 行内的表单
    • 对齐方式
    • 表单验证
    • 自定义的验证规则
    • 表单内组件尺寸控制
    • 总结form模块的属性
    • form模块的方法
      • Form Methods(官方文档的,了解一下)
    • form-item模块的属性
  • 总结

ElementUI表单

el的表单官网内容很多,看了一眼觉得心累了。但实际上它使用起来非常的方便,el为我们封装了各种组件,样式也大众。

一个简单的案例

代码如下(使用时确保引入了相关的组件)

<template>
<el-form ref="form" :model="form" label-width="80px">
  <el-form-item label="用户名"><!-- form-item用于显示关联的文件 -->
    <el-input v-model="form.name"></el-input>
  </el-form-item>
  <el-form-item label="密码">
    <el-input type="password" v-model="form.pwd"></el-input>
  </el-form-item>
      <el-form-item>
    <el-button type="primary" @click="onSubmit">登录</el-button>
    <el-button>取消</el-button>
  </el-form-item>
</el-form>
</template>
<script>
  export default {
    data() {
      return {
        form: {
          name: '',
          pwd:''
        }
      }
    },
    methods: {
      onSubmit() {
        console.log('submit!');
      }
    }
  }
</script>

看起来还是挺多行是吗?去掉些必要标签还有些声明,剩下的是:el-form,el-input,el-form-item三个组件。el-form是必要的,对布局有影响,el-form-item是做为关联表单元素的文字,el-input便是我们的输入框了。布局已经预设,用这三个便可以是最基本的表单了。是否方便?

表单的主要组件

常用的表单组件,输入框,下拉框,单选框,多选框,文本域,对应的组件是:Form,FormItem,Input,Select,Option,Checkbox,Radio

还有一些同样是实用组件,开关(Switch)、日期选择器(DatePicker),时间选择器(TimePicker)单选框组(RadioGroup),多选框组(CheckboxGroup)等

表单组件的使用

不管哪一种组件都一样,先main.js中引入模块,然后在页面中即可使用:

// main.js
import {Form,FormItem,Input,CheckboxGroup,Radio, RadioGroup,Switch} from 'element-ui';
Vue.use(Form)
Vue.use(RadioGroup)
Vue.use(Radio)
Vue.use(FormItem)
Vue.use(Input)
// ...需要哪些引入哪些

假设在form.vue中使用,代码多了看了烦,我只写一个下拉框、开关、文本域。(这叫抛砖引玉,xixi)

<template>
<el-form ref="form" :model="form" label-width="80px">
  <el-form-item label="活动区域">
      <!-- 记得使用v-model来绑定表单字段 -->
    <el-select v-model="form.region" placeholder="请选择活动区域">
      <el-option label="区域一" value="shanghai"></el-option>
      <el-option label="区域二" value="beijing"></el-option>
    </el-select>
  </el-form-item>
  <el-form-item label="即时配送">
      <!-- 记得使用v-model来绑定表单字段 -->
    <el-switch v-model="form.delivery"></el-switch>
  </el-form-item>
  <el-form-item label="活动形式">
      <!-- 记得使用v-model来绑定表单字段 -->
    <el-input type="textarea" v-model="form.desc"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="onSubmit">立即创建</el-button>
    <el-button>取消</el-button>
  </el-form-item>
</el-form>
</template>
<script>
  export default {
    data() {
      return {
        form: {
          region: '',// 区域
          delivery: false,// 是否及时配送
          desc: '' //活动形式描述
        }
      }
    },
    methods: {
      onSubmit() {
        console.log('submit!');
      }
    }
  }
</script>

效果如下

行内的表单

不难发现我们的组件都是再一个组件站一行,如果要使组件变为行内元素也肥肠简单。给el-form组件添加:inline="true"的属性即可(属性前加冒号才会认值为true是一个布尔,否将认为是字符串)

<el-form :inline="true">
    <!--// 如此即可 -->
</el-form>

对齐方式

**这里的对齐指的是label的文本对齐方式。**同样是加载el-form组件的label-position属性中

label-position的可用值: left,right,top(top为label在上,组件再下的显示,不在同一行)。如下

<el-form label-position="left">
    <!--// 如此即可 -->
</el-form>

表单验证

表单验证的关键点有三:

1.el-form组件中添加:rules="规则组对象"属性添加,值为验证规则的对象

2.表单组件添加prop属性为组件指定验证规则。prop属性加在el-form-item

3.定义验证规则的对象

验证一般用于输入框

如下代码:

<template>
<el-form ref="form" :rules="rules" :model="form" label-width="180px">
  <el-form-item label="活动名称,长度限制" prop="name">
    <el-input v-model="form.name"></el-input>
  </el-form-item>
  <el-form-item label="url,类型限制" prop="u">
    <el-input v-model="form.url"></el-input>
  </el-form-item>
</el-form>
</template>
<script>
  export default {
    data() {
      return {
        form: {
          name: '',
          url:'',
        },
        rules:{
            name:[
                { required: true, message: '请输入活动名称', trigger: 'blur' },
                { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
            ],
            u:[
                { type: 'url', required: true, message: '必须为规范的url地址', trigger: 'change' }
            ]
        },
      }
    },
    }
  }
</script>

重点提一下,如过要验证数字类型,那么。需要v-model换成v-model.number!!! 切记 !!!

<el-form-item label="url,类型限制" prop="u">
    <!-- 加上.number修饰符才会把输入值转为数字类型 -->
    <el-input v-model.number="form.num"></el-input>
</el-form-item>

自定义的验证规则

自定义验证与预定义验证的不同在于一点(考考你,共有哪三个关键点):

自定义规则对象的编写形式

<script>
export default {
    data() {
        let checkNum = (rules,val,callback)=>{
            rules // 这里会得到定义的校验对象的属性
            if(!Number.isInteger(val)){
                // 如果要提示错误信息,那么通过第三个参数回调出去,参数值为Error实例
                callback(new Error('请输入数值'))
            }
        }
        return {
           // 校验规则
            rules:{
	            u:[
                    { type: 'url', required: true, message: '必须为规范的url地址', trigger: 'change' },
                    // 添加一条自定义的验证,值为函数名
                    {validator:checkNum,targger:'change'}
    	        ],
	        },
        }
    }
}
</script>

表单内组件尺寸控制

通过给el-form添加size属性,来指定表单元素的尺寸。很简单,如下

size的可用值:medium / small / mini

<el-form size="miniz">
</el-form>

总结form模块的属性

属性 属性值 说明
model object 表单数据对象
rules object 验证规则
inline Boolean默认false 是否设置为行内元素
label-position right/left/top默认right 表单域标签对齐方式
label-width string例如150px 标签标签(label)的宽度
size medium / small / mini 表单组件尺寸
status-icon boolean默认false 是否显示校验结果的icon
disabled boolean默认false 作用域为整个表单。不用多解释了

form模块的方法

Form Methods(官方文档的,了解一下)

方法名 说明 参数
validate 对整个表单进行校验的方法,参数为一个回调函数。该回调函数会在校验结束后被调用,并传入两个参数:是否校验成功和未通过校验的字段。若不传入回调函数,则会返回一个 promise Function(callback: Function(boolean, object))
validateField 对部分表单字段进行校验的方法 Function(props: array | string, callback: Function(errorMessage: string))
resetFields 对整个表单进行重置,将所有字段值重置为初始值并移除校验结果
clearValidate 移除表单项的校验结果。传入待移除的表单项的 prop 属性或者 prop 组成的数组,如不传则移除整个表单的校验结果 Function(props: array | string)

如何使用这些方法?

<template>
	<el-form ref="f">
    </el-form>
</template>
<script>
    // 重置表单
    const from = this.$refs.f.resetFields()
</script>

form-item模块的属性

参数 参数值 说明
prop string 传入model的字段。在使用 validate、resetFields 方法的情况下,该属性是必填的
label string tag text
label-width string 例如150px。标签占用的框度
required boolean 是否必填
rules object 表单校验规则
size medium / small / mini 组件尺寸
show-message boolean默认true 是否显示校验错误信息
inline-message boolean默认false 以行内形式展示校验信息

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Vue模仿ElementUI的form表单实例代码

    实现要求 模仿 ElementUI 的表单,分为四层结构:index 组件.Form 表单组件.FormItem 表单项组件.Input 和 CheckBox 组件,具体分工如下: index 组件: 实现:分别引入 Form 组件.FormItem 组件.Input 组件,实现组装: Form 表单组件: 实现:预留插槽.管理数据模型 model.自定义校验规则 rules.全局校验方法 validate: FormItem 表单项组件: 实现:预留插槽.显示 label 标签.执行数据校验.

  • Vue之ElementUI Form表单校验

    表单校验是前端开发过程中最常用到的功能之一,根据个人的工作经验总结在此对表单校验功能的基础用法进行整理说明. 以下是form的demo el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic"> <el-form-item prop="email"

  • vue elementui form表单验证的实现

    最近我们公司将前端框架由easyui 改为 vue+elementui .自学vue两周 就开始了爬坑之路.业余时间给大家分享一下心得,技术新手加上第一次分享(小激动),有什么不足的地方欢迎大家指正,多多交流才能共同进步! 1.问题 我们公司的项目比较大 表格 表单的页面都不胜数 ,基于此封装了一些 可复用的代码. 2.分析  vue给了我们不一样的前端代码体验  element ui 给我们一套功能强大的组件 减少了我们大量的开发时间 .双剑合璧 天下无敌!  但每个公司的代码风格不同  用户

  • vue elementUI 表单校验功能之数组多层嵌套

    在使用vue element-ui form表单渲染的时候,会遇到这样的数据结构: { "title":''123455, "email":'123456@qq.com', "list": [ { "id": "quis consequat culpa ut pariatur", "name": "et quis irure dolore ullamco", &quo

  • vue elementUI 表单嵌套验证的实例代码

    一:表单一级验证 element中from组件内表单验证通过使用el-form标签,绑定model和rules属性进行表单验证 <el-form ref="form" :model="form" :rules="rules" label-width="110px" @submit.native.prevent> <el-form-item label="客户名称:" size="

  • vue基础之详解ElementUI的表单

    目录 ElementUI表单 一个简单的案例 表单的主要组件 表单组件的使用 行内的表单 对齐方式 表单验证 自定义的验证规则 表单内组件尺寸控制 总结form模块的属性 form模块的方法 Form Methods(官方文档的,了解一下) form-item模块的属性 总结 ElementUI表单 el的表单官网内容很多,看了一眼觉得心累了.但实际上它使用起来非常的方便,el为我们封装了各种组件,样式也大众. 一个简单的案例 代码如下(使用时确保引入了相关的组件) <template> &l

  • 详解ElementUI之表单验证、数据绑定、路由跳转

    1.新建表单组件el-form.vue <template> <div class="form"> <el-form ref="form" :model="UserForm" :rules="this.$store.state.userinfo.CheckRules" label-position="left" label-width="180px">

  • 第七篇Bootstrap表单布局实例代码详解(三种表单布局)

    Bootstrap提供了三种表单布局:垂直表单,内联表单和水平表单.下面逐一给大家介绍,有兴趣的朋友一起学习吧. 创建垂直或基本表单: •·向父 <form> 元素添加 role="form". •·把标签和控件放在一个带有 class .form-group 的 <div> 中.这是获取最佳间距所必需的. •·向所有的文本元素 <input>.<textarea> 和 <select> 添加 class .form-cont

  • 详解Angular 4 表单快速入门

    基础知识 Angular CLI 基本使用 安装 Angular CLI (可选) npm install -g @angular/cli 创建新的项目 ng new PROJECT-NAME 启动本地服务器 cd PROJECT-NAME ng serve Angular Forms 简介 Angular 4 中有两种表单: Template Driven Forms - 模板驱动式表单 (类似于 AngularJS 1.x 中的表单 ) Reactive Forms - 响应式表单 本文主要

  • 详解AngularJS实现表单验证

    开始学习AngularJS表单验证: 常用的表单验证指令 1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: 复制代码 代码如下: <<input type="text" required /> 2. 最小长度 验证表单输入的文本长度是否大于某个最小值,在输入字段上使用指令ng-minleng= "{number}": 复制代码 代码如下: <<input type="tex

  • 详解jQuery的表单验证插件--Validation

    大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API.所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言.该插件是由 Jörn Zaefferer 编写和维护的,他是 jQuery 团队的一名成员,是 jQuery UI 团队的主要开发人员,是 QUnit 的维护人员.该插件

  • 详解Bootstrap创建表单的三种格式(一)

    在本章中,我们将学习如何使用 Bootstrap 创建表单.Bootstrap 通过一些简单的 HTML 标签和扩展的类即可创建出不同样式的表单.  Bootstrap表单类型分为三种格式:垂直或基本表单.内联表单.水平表单. 垂直或基本表单(display:block;) 基本的表单结构是 Bootstrap 自带的,个别的表单控件自动接收一些全局样式.下面列出了创建基本表单的步骤: 向父 <form> 元素添加 role="form". 把标签和控件放在一个带有 cla

  • Javascript 详解封装from表单数据为json串进行ajax提交

    摘要: js封装from表单数据为json串进行ajax提交 json封装代码 function getFormJson(frm) { //frm:form表单的id var o = {}; var a = $("#"+frm).serializeArray(); $.each(a, function() { if (o[this.name] !== undefined) { if (!o[this.name].push) { o[this.name] = [ o[this.name]

  • 详解ng-alain动态表单SF表单项设置必填和正则校验

    在使用动态表单时对表单项进行非空校验及正则校验. 使用手机号进行校验,示例如下: 动态表单的基本使用:https://ng-alain.com/form/getting-started/zh 基于基本示例,增加手机号必填与正则校验的例子: @Component({ selector: 'app-home', template: ` <sf [schema]="schema" [ui]="ui" (formSubmit)="submit($event)

  • Vue.js实现可配置的登录表单代码详解

    表单是后台项目业务中的常用组件,这次重构了登录功能以满足登录方式可配置的需求,在此记录和分享一下. 业务场景 在之前,项目只支持手机号+密码登录,前端是直接把表单写死的,后来有客户希望能支持验证码登录,有的客户还希望能有手机号+验证码+密码的登录方式-所以登录方式的灵活性需要可配置的表单支持,于是我把登录组件做了拆分. 以表单元素为粒度,分离出了手机号.密码.短信验证码这几个组件,它们内部都有自己的表单验证方法,通过组合可以快速完成登录.注册.找回密码等表单组件.高内聚低耦合.高内聚低耦合-跟着

随机推荐