位置: IT常识 - 正文

vue表单验证rules以及validator验证器的使用(vue表单验证数字)

编辑:rootadmin
vue表单验证rules以及validator验证器的使用

推荐整理分享vue表单验证rules以及validator验证器的使用(vue表单验证数字),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue表单验证插件,vue表单验证代码,vue表单验证代码,vue表单验证数字,vue表单验证插件,vue表单验证不起作用,vue表单验证规则,vue表单验证不起作用,内容如对您有帮助,希望把文章链接给更多的朋友!

为防止用户犯错,尽可能更早地发现并纠正错误。

Element中Form (表单)组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可。

注意:prop对应表单域 model 字段,使用 validate方法时,该属性是必填的。

表单验证rules

以官网给出的例子分析来看

将prop 属性设置为需校验的字段名。

 在data里配置要校验字段和校验规则:

required:true表示为必须输入;

message:""设置不符合校验规则时的提示信息;

trigger:""设置校验的触发方式:

        ‘change’:数据改变时触发;

        ‘blur’:失去焦点时触发;

vue表单验证rules以及validator验证器的使用(vue表单验证数字)

        没有进行任何输入时,不会触发change,但一定会触发blur事件。

设置校验规则后,表头会出现红色*样式

该示例完整代码:

<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><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>自定义校验规则

除此之外,我们还可以使用validator验证器来自定义校验规则,

举一个使用自定义验证规则来完成密码的二次验证的例子。

还是和之前一样,设置prop需校验的字段名和v-model绑定值

 但这时,我们需要在data中自己定义校验规则,需要注意的是,设置的规则与return同级。

 在rules中配置要校验的字段和用到的规则

 

完整代码如下:

<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>
本文链接地址:https://www.jiuchutong.com/zhishi/288942.html 转载请保留说明!

上一篇:伦索伊斯马拉年塞斯国家公园,巴西巴雷里尼亚斯市 (© WIN-Initiative/Getty Images)(伦索伊斯马拉赫塞斯国家公园)

下一篇:pytorch对已有模型的更改(常用的操作)(pytorch model.module)

  • qq升级一个皇冠一般需要多少天(扣扣升一个皇冠要多久)

  • 第二个微信号怎么申请(第二个微信号怎样注册)

  • 小米8se屏幕为什么贵(小米8se有时候看屏幕会感到突然一闪是什么原因)

  • 微信转账需要对方收吗(微信转账需要对方收款吗)

  • 苹果X怎么设置门禁卡(苹果x怎么设置呼叫转移其他号码)

  • 低级格式化和高级格式化的区别(低级格式化和高级格式化的特点分别是什么)

  • 华为手机简体字繁体字在哪里切换(华为手机简体字繁体字转换器)

  • 为什么蜂窝数据打不开(为什么蜂窝数据不能切换为副号)

  • 美拍可以拍10分钟吗(美拍可以拍10分的视频吗)

  • 淘宝退货要自己出邮费吗(淘宝退货要自己准备盒子吗)

  • 华为手机有双系统吗(华为手机有双系统怎么切换)

  • 入网资格验证失败是什么意思(入网资格验证失败 中国移动宝藏卡)

  • 状态栏怎么设置(手机顶部状态栏怎么设置)

  • 虚拟光驱怎么安装(虚拟光驱怎么安装vs2015)

  • 骁龙处理器有没有npu(骁龙处理器有没有后门)

  • 智慧场景图标如何取消(智慧场景怎么用)

  • ios13省电方法(苹果13设置省电)

  • word怎么打密封线(word怎么加密封线)

  • 如何退出qq音乐账号(微信如何退出qq音乐)

  • 联通hd什么意思(联通有个hd)

  • 华为畅享10plus有NFC吗(华为畅享10plus有红外线吗)

  • vivo哪款有红外线(vivos16pro有红外线功能吗)

  • 笔记本电脑BIOS出现故障怎么办 三种常见BIOS故障解决方案(笔记本电脑bios设置)

  • win10怎么显示文件后缀名(Win10怎么显示文件类型)

  • 微信小程序 h5页面跳转小程序(超详细讲解)(微信小程序 h5页面打不开)

  • 阿里云主机ECS安装WDCP面板后无法进入解决办法(阿里云ecs重装)

  • WordPress安装百度统计教程(wordpress怎么安装插件)

  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设 电脑维修 湖南楚通运网络