位置: IT常识 - 正文

Element-UI中的表单验证(element ui table)

编辑:rootadmin
Element-UI中的表单验证

推荐整理分享Element-UI中的表单验证(element ui table),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:element-ui表格,element ui table index,element ui el-table,element ui table formatter,element ui table formatter,element ui table formatter,element ui table,elementui中的表格某一项选中和不选中在哪里判断,内容如对您有帮助,希望把文章链接给更多的朋友!

  Element是一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。   Element为vue-cli 准备了相应的 Element 插件,开发者可以用它们快速地搭建一个基于 Element 的项目,不仅能够快速体验交互细节,还可以使用前端框架封装的代码进行快速开发。   Element-UI作为前端框架,最常使用到的就是表单验证。表单验证是在防止用户犯错的前提下,尽可能让用户更早的发现并纠正错误。在Element-UI中表单验证主要有以下几种方式:

一、全部字段表单验证Element-UI中的表单验证(element ui table)

  适用于表单全部字段校验或需要校验字段类型比较简单的数据类型。   Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可。rules根据rules给出的规则会对prop中的值进行校验,当不满足要求时会弹出message相应的提示信息。   示例代码如下:

<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 label="活动时间" required> <el-col :span="11"> <el-form-item prop="date1"> <el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker> </el-form-item> </el-col> <el-col class="line" :span="2">-</el-col> <el-col :span="11"> <el-form-item prop="date2"> <el-time-picker placeholder="选择时间" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker> </el-form-item> </el-col> </el-form-item> <el-form-item label="即时配送" prop="delivery"> <el-switch v-model="ruleForm.delivery"></el-switch> </el-form-item> <el-form-item label="活动性质" prop="type"> <el-checkbox-group v-model="ruleForm.type"> <el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox> <el-checkbox label="地推活动" name="type"></el-checkbox> <el-checkbox label="线下主题活动" name="type"></el-checkbox> <el-checkbox label="单纯品牌曝光" name="type"></el-checkbox> </el-checkbox-group> </el-form-item> <el-form-item label="特殊资源" prop="resource"> <el-radio-group v-model="ruleForm.resource"> <el-radio label="线上品牌商赞助"></el-radio> <el-radio label="线下场地免费"></el-radio> </el-radio-group> </el-form-item> <el-form-item label="活动形式" prop="desc"> <el-input type="textarea" v-model="ruleForm.desc"></el-input> </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>

  这种方式需要在data()中写入rule{},将prop中需要校验的字段写上验证规则,示例代码如下:

<script> export default { data() { return { ruleForm: { name: '', region: '', date1: '', date2: '', delivery: false, type: [], resource: '', desc: '' }, rules: { name: [ { required: true, message: '请输入活动名称', trigger: 'blur' }, { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' } ], region: [ { required: true, message: '请选择活动区域', trigger: 'change' } ], date1: [ { type: 'date', required: true, message: '请选择日期', trigger: 'change' } ], date2: [ { type: 'date', required: true, message: '请选择时间', trigger: 'change' } ], type: [ { type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' } ], resource: [ { required: true, message: '请选择活动资源', trigger: 'change' } ], desc: [ { required: true, message: '请填写活动形式', trigger: 'blur' } ] } }; }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('submit!'); } else { console.log('error submit!!'); return false; } }); }, resetForm(formName) { this.$refs[formName].resetFields(); } } }</script>二、单个表单域表单验证

  适用于需要个别检验的字段,或者表单字段有变动的校验。   示例代码如下:

<el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic"> <el-form-item prop="email" label="邮箱" :rules="[ { required: true, message: '请输入邮箱地址', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] } ]" > <el-input v-model="dynamicValidateForm.email"></el-input> </el-form-item> <el-form-item v-for="(domain, index) in dynamicValidateForm.domains" :label="'域名' + index" :key="domain.key" :prop="'domains.' + index + '.value'" :rules="{ required: true, message: '域名不能为空', trigger: 'blur' }" > <el-input v-model="domain.value"></el-input><el-button @click.prevent="removeDomain(domain)">删除</el-button> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button> <el-button @click="addDomain">新增域名</el-button> <el-button @click="resetForm('dynamicValidateForm')">重置</el-button> </el-form-item></el-form><script> export default { data() { return { dynamicValidateForm: { domains: [{ value: '' }], email: '' } }; }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('submit!'); } else { console.log('error submit!!'); return false; } }); }, resetForm(formName) { this.$refs[formName].resetFields(); }, removeDomain(item) { var index = this.dynamicValidateForm.domains.indexOf(item) if (index !== -1) { this.dynamicValidateForm.domains.splice(index, 1) } }, addDomain() { this.dynamicValidateForm.domains.push({ value: '', key: Date.now() }); } } }</script>三、自定义校验规则

  适用于Elment-UI中的定义规则不能满足需求,需要自行定义验证规则的情况。 需要在data() {}中添加自定义的校验规则,然后在在data的return中通过validator引用校验规则。data() {return{}}中定义的rules要 中的 :rules 属性值相同,rules中的对象userName要与与 中的prop属性值相同。 示例代码如下:

<el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> <el-form-item label="密码" prop="pass"> <el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input> </el-form-item> <el-form-item label="确认密码" prop="checkPass"> <el-input type="password" v-model="ruleForm.checkPass" autocomplete="off"></el-input> </el-form-item> <el-form-item label="年龄" prop="age"> <el-input v-model.number="ruleForm.age"></el-input> </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() { var checkAge = (rule, value, callback) => { if (!value) { return callback(new Error('年龄不能为空')); } setTimeout(() => { if (!Number.isInteger(value)) { callback(new Error('请输入数字值')); } else { if (value < 18) { callback(new Error('必须年满18岁')); } else { callback(); } } }, 1000); }; var validatePass = (rule, value, callback) => { if (value === '') { callback(new Error('请输入密码')); } else { if (this.ruleForm.checkPass !== '') { this.$refs.ruleForm.validateField('checkPass'); } callback(); } }; var validatePass2 = (rule, value, callback) => { if (value === '') { callback(new Error('请再次输入密码')); } else if (value !== this.ruleForm.pass) { callback(new Error('两次输入密码不一致!')); } else { callback(); } }; return { ruleForm: { pass: '', checkPass: '', age: '' }, rules: { pass: [ { validator: validatePass, trigger: 'blur' } ], checkPass: [ { validator: validatePass2, trigger: 'blur' } ], age: [ { validator: checkAge, trigger: 'blur' } ] } }; }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('submit!'); } else { console.log('error submit!!'); return false; } }); }, resetForm(formName) { this.$refs[formName].resetFields(); } } }</script>

  自定义规则有两种书写位置:

在data中写规则,示例代码如下:data() { // 自定义校验规则 var bargainMoney = (rule, value, callback) => { // rule 对应使用bargainMoney自定义验证的 对象 // value 对应使用bargainMoney自定义验证的 数值 // callback 回调函数 const r = /+?[1-9][0-9]*$/; // 正整数 if (value == null || String(value).trim() === "") { callback(new Error("不能为空")); } else if (!r.test(value)) { callback(new Error("请输入正整数")); }else { callback(); } };   return { formData: { haggleNumber: "", // 砍价人数 }, rules: { haggleNumber: [ { required: true, validator: bargainMoney, trigger: "blur" } ], }   }}在methods中写规则,示例代码如下:data() { return { formData: { haggleNumber: "", // 砍价人数 }, rules: { haggleNumber: [ { required: true, validator: this.bargainMoney, trigger: "blur" } ] } }},methods: { // 自定义校验规则 bargainMoney(rule, value, callback){ // rule 对应使用bargainMoney自定义验证的 对象 // value 对应使用bargainMoney自定义验证的 数值 // callback 回调函数 const r = /+?[1-9][0-9]*$/; // 正整数 if (value == null || String(value).trim() === "") { return callback(new Error("不能为空")); } else if (!r.test(value)) { return callback(new Error("请输入正整数")); }else { return callback(); } }}

二者的区别在于:

在data 中不需要通过 return 回调函数,而在 methods 中则需要。在methods中写的验证规则 ,需要在rules中配置规则时通过 this获取。四、动态增减表单项

  除了在 Form 组件上一次性传递所有的验证规则外还可以在单个的表单域上传递属性的验证规则。   示例代码如下:

<el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic"> <el-form-item prop="email" label="邮箱" :rules="[ { required: true, message: '请输入邮箱地址', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] } ]" > <el-input v-model="dynamicValidateForm.email"></el-input> </el-form-item> <el-form-item v-for="(domain, index) in dynamicValidateForm.domains" :label="'域名' + index" :key="domain.key" :prop="'domains.' + index + '.value'" :rules="{ required: true, message: '域名不能为空', trigger: 'blur' }" > <el-input v-model="domain.value"></el-input><el-button @click.prevent="removeDomain(domain)">删除</el-button> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button> <el-button @click="addDomain">新增域名</el-button> <el-button @click="resetForm('dynamicValidateForm')">重置</el-button> </el-form-item></el-form><script> export default { data() { return { dynamicValidateForm: { domains: [{ value: '' }], email: '' } }; }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('submit!'); } else { console.log('error submit!!'); return false; } }); }, resetForm(formName) { this.$refs[formName].resetFields(); }, removeDomain(item) { var index = this.dynamicValidateForm.domains.indexOf(item) if (index !== -1) { this.dynamicValidateForm.domains.splice(index, 1) } }, addDomain() { this.dynamicValidateForm.domains.push({ value: '', key: Date.now() }); } } }</script>
本文链接地址:https://www.jiuchutong.com/zhishi/300846.html 转载请保留说明!

上一篇:2023年美赛春季赛 赛题浅析(2023年美赛春季赛成绩查询)

下一篇:什么是 Web 3.0?(新手入门指南)(什么是男人无力的行为)

  • 淘特新人0元三件在哪里(淘特0元3件入口)

    淘特新人0元三件在哪里(淘特0元3件入口)

  • 为什么vue视频保存不了(vue视频保存不了)

    为什么vue视频保存不了(vue视频保存不了)

  • airpods打开电量每次不一样(airpods打开电量变来变去)

    airpods打开电量每次不一样(airpods打开电量变来变去)

  • 滴滴服务分105啥意思(滴滴服务分107多少算高)

    滴滴服务分105啥意思(滴滴服务分107多少算高)

  • 美版是什么意思(苹果手机美版是什么意思)

    美版是什么意思(苹果手机美版是什么意思)

  • 为什么pr导出视频找不到文件(为什么pr导出视频没声音)

    为什么pr导出视频找不到文件(为什么pr导出视频没声音)

  • 小米10可以root吗(小米10手机可以root吗)

    小米10可以root吗(小米10手机可以root吗)

  • Excel重复值怎么找(excel重复值怎么删除只保留一个)

    Excel重复值怎么找(excel重复值怎么删除只保留一个)

  • mp4和手机怎么传输(mp4和手机怎么传歌)

    mp4和手机怎么传输(mp4和手机怎么传歌)

  • 手机wps文档分享不了到微信(手机WPS文档分享出去段落没了)

    手机wps文档分享不了到微信(手机WPS文档分享出去段落没了)

  • 苹果平板下载不了软件怎么回事(苹果平板下载不了app)

    苹果平板下载不了软件怎么回事(苹果平板下载不了app)

  • 苹果手机怎么设置通讯录以外的电话打不进来(苹果手机怎么设置呼叫转移)

    苹果手机怎么设置通讯录以外的电话打不进来(苹果手机怎么设置呼叫转移)

  • 前置摄像头进灰怎么办(华为mate20前置摄像头进灰)

    前置摄像头进灰怎么办(华为mate20前置摄像头进灰)

  • ipad可以用腾讯会议吗(iPad可以用腾讯会议的屏幕共享嘛)

    ipad可以用腾讯会议吗(iPad可以用腾讯会议的屏幕共享嘛)

  • vivo哪款手机支持nfc功能(vivo哪款手机支持nfc)

    vivo哪款手机支持nfc功能(vivo哪款手机支持nfc)

  • 怎样退掉京东已激活的电脑(怎样退掉京东已激活的电脑 还原系统)

    怎样退掉京东已激活的电脑(怎样退掉京东已激活的电脑 还原系统)

  • 华为手机图片在哪个文件(华为手机图片在哪个文件夹里存储)

    华为手机图片在哪个文件(华为手机图片在哪个文件夹里存储)

  • 华为荣耀7可以双卡吗(华为荣耀7可以玩光遇吗)

    华为荣耀7可以双卡吗(华为荣耀7可以玩光遇吗)

  • 华为p30的文件管理在哪里(华为p30pro文件管理)

    华为p30的文件管理在哪里(华为p30pro文件管理)

  • 华为荣耀7怎么插双卡(华为荣耀7怎么关机)

    华为荣耀7怎么插双卡(华为荣耀7怎么关机)

  • 天天p图怎么p字(天天p图怎么打字)

    天天p图怎么p字(天天p图怎么打字)

  • oppo手机隐藏程序的密码怎么修改(oppo手机隐藏应用程序)

    oppo手机隐藏程序的密码怎么修改(oppo手机隐藏应用程序)

  • 为什么现在组装电脑不用买网卡声卡(为什么现在组装不了电脑)

    为什么现在组装电脑不用买网卡声卡(为什么现在组装不了电脑)

  • 朋友圈怎么关闭(朋友圈怎么关闭全部)

    朋友圈怎么关闭(朋友圈怎么关闭全部)

  • Mac怎么提高色彩对比度?Mac提高色彩对比度教程(mac电脑色彩设置)

    Mac怎么提高色彩对比度?Mac提高色彩对比度教程(mac电脑色彩设置)

  • TensorBoard详解之安装使用和代码介绍(tensorboard作用)

    TensorBoard详解之安装使用和代码介绍(tensorboard作用)

  • 帝国cms如何设置显示时间的格式(帝国cms如何设置最新)

    帝国cms如何设置显示时间的格式(帝国cms如何设置最新)

  • 金税盘版开票软件怎么升级
  • 提供维修业务的税率
  • 一般纳税人劳务公司可以开3%的发票吗
  • 月末处理工作主要包括
  • 属于原始凭证的有哪些
  • 长期股权投资是金融资产还是非金融资产
  • 本月缴纳增值税和上个月账本金额不对
  • 新会计准则下长期股权投资的变化
  • 当天收入支出日报表怎么做
  • 零税率的发票
  • 转增股如何计算资本公积金?
  • 企业取暖费怎么做会计分录
  • 房地产企业预缴税费
  • 商城退换货
  • 基本养老保险覆盖人数
  • 地税没报税怎么办
  • 单位承租个人房屋交哪些税2020年
  • 机打发票多久可以作废
  • 提供鉴证咨询服务属于增值税征税范围吗
  • 企业申请资产损失需要提供哪些确认证据?
  • 固定资产被替换部件的会计处理
  • 融资租入固定资产的改建支出计入什么科目
  • 零税率发票如何抵扣
  • 中途建账期初余额错误怎么纠正
  • 开票多一分钱怎么办
  • 1697509300
  • 新企业购买金税盘
  • apple取消支付方式
  • 上月有留底税额,这个月有销销没有进项怎么做账
  • windows10轻松使用是什么
  • 经营租入的设备计入什么科目
  • 教育培训费能抵扣吗
  • 没按时报税罚款多少
  • 预收一年的30万怎么算
  • php字符串定义
  • 购买税盘怎么做分录
  • keyemain.exe是什么
  • PHP:mcrypt_module_close()的用法_Mcrypt函数
  • 企业养老金有几个档次
  • 以前年度损益在报表哪里体现
  • vue.js前端
  • 叮咚你有一份好运请查收图片
  • 数学建模三个人谁最难
  • 花雕典故
  • flask框架入门
  • index.php怎么修改
  • 技术服务费计入成本会计分录
  • 金税盘 解锁
  • 企业福利费超过预算收入
  • 分享帝国cms选取什么
  • 核定扣除投入产品怎么算
  • 个体工商户开具房屋租赁发票
  • 个税手续费返还比例
  • 企业未开票收入怎么入账
  • 疫情防控重点保障物资免征增值税
  • 向母公司贷款利率是多少
  • 在unix系统中采用的页面置换
  • win7推送win10
  • windows10点击任务栏没有反应
  • WinXP系统建立VPN连接虚拟专用网络连接的途径
  • win7旗舰版系统激活码
  • linux如何打包tar.gz
  • windows 10各版本
  • win8语言设置
  • windows8介绍
  • [置顶]电影名字《收件人不详》
  • python3循环语句
  • 置顶在哪里
  • 如何给图像应用css滤镜处理效果
  • unity服务器端
  • jquery的checked
  • node实现文件上传
  • locust框架
  • 江西税务局官网登录
  • 设备租赁增值税怎么抵扣
  • 公司自有房屋装修费用入什么料目
  • 江苏退休核定表最低缴费系数是什么意思
  • 地税局基层职位怎么样
  • 税务局监控个人账户流程
  • 车船使用税减免法律规定
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设