方法使用前需了解:

来自”和“小编的小提示:

首先打印一下this.$refs[formName],检查是否拿到了正确的需要验证的form。

其次在拿到了正确的form后,检查该form上添加的表单验证是否正确,需要注意的点有:

1.使用此方法前检查prop一定必须要写在<el-form-item>上面,写在里面的input上或者其他任何地方都不行(el-form-item prop属性绑定)

2.el-form rules,model属性绑定,ref标识

自定义表单验证的坑:

一.validate/resetFields 未定义。

1:要验证的DOM,还没有加载出来。

2:有可能this.$refs[ruleForm].validate() 方式不识别。需要使用: this.$refs.ruleForm.validate(); 这种方式,不是你们想要的结果。

解决办法:

  1. this.ticketDialog = true;
  2. //对整个表单进行重置,将所有字段值重置为初始值并移除校验结果
  3. this.$nextTick(function() {
  4. this.$refs.ticketInfoForm.resetFields();
  5. })

或者:this.$refs[ruleForm].validate() 方式不识别。需要使用: this.$refs.ruleForm.validate();

那么如下所示:

  1. methods: {
  2. submitForm(ruleForm2) {
  3. //官网 this.$refs[ruleForm2].validate();
  4. //在实际使用中,会报错。validate未定义
  5. //使用this.$refs.ruleForm2.validate(); 成功。
  6. this.$refs[ruleForm2].validate((valid) => {
  7. if (valid) {
  8. alert('submit!');
  9. } else {
  10. console.log('error submit!!');
  11. return false;
  12. }
  13. });
  14. }
  15. }

二. 数字类型的验证, 兼容mac和windows系统。

数字类型的验证需要在 v-model 处加上 .number 的修饰符,这是 Vue 自身提供的用于将绑定值转化为 number 类型的修饰符。
如下所示:

  1. <el-form-item label="年龄" prop="age">
  2. <el-input type="number" v-model.number="ruleForm2.age"></el-input>
  3. </el-form-item>

如有不解,可以查看具体案例:

html:

  1. <script src="//unpkg.com/vue/dist/vue.js"></script>
  2. <script src="//unpkg.com/element-ui/lib/index.js"></script>
  3. <div id="app">
  4. <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
  5. <el-form-item label="密码" prop="pass">
  6. <el-input type="password" v-model="ruleForm.pass" auto-complete="off"></el-input>
  7. </el-form-item>
  8. <el-form-item label="确认密码" prop="checkPass">
  9. <el-input type="password" v-model="ruleForm.checkPass" auto-complete="off"></el-input>
  10. </el-form-item>
  11. <el-form-item label="年龄" prop="age">
  12. <el-input type="number" v-model.number="ruleForm.age"></el-input>
  13. </el-form-item>
  14. <el-form-item>
  15. <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
  16. <el-button @click="resetForm('ruleForm')">重置</el-button>
  17. </el-form-item>
  18. </el-form>
  19. </div>

js:

  1. var Main = {
  2. data() {
  3. var checkAge = (rule, value, callback) => {
  4. if (!value) {
  5. return callback(new Error('年龄不能为空'));
  6. }
  7. setTimeout(() => {
  8. if (!Number.isInteger(value)) {
  9. callback(new Error('请输入数字值'));
  10. } else {
  11. if (value < 18) {
  12. callback(new Error('必须年满18岁'));
  13. } else {
  14. callback();
  15. }
  16. }
  17. }, 1000);
  18. };
  19. var validatePass = (rule, value, callback) => {
  20. if (value === '') {
  21. callback(new Error('请输入密码'));
  22. } else {
  23. if (this.ruleForm.checkPass !== '') {
  24. this.$refs.ruleForm.validateField('checkPass');
  25. }
  26. callback();
  27. }
  28. };
  29. var validatePass2 = (rule, value, callback) => {
  30. if (value === '') {
  31. callback(new Error('请再次输入密码'));
  32. } else if (value !== this.ruleForm.pass) {
  33. callback(new Error('两次输入密码不一致!'));
  34. } else {
  35. callback();
  36. }
  37. };
  38. return {
  39. ruleForm: {
  40. pass: '',
  41. checkPass: '',
  42. age: ''
  43. },
  44. rules: {
  45. pass: [
  46. { validator: validatePass, trigger: 'blur' }
  47. ],
  48. checkPass: [
  49. { validator: validatePass2, trigger: 'blur' }
  50. ],
  51. age: [
  52. { validator: checkAge, trigger: 'blur' }
  53. ]
  54. }
  55. };
  56. },
  57. methods: {
  58. submitForm(ruleForm) {
  59. //官网 this.$refs[ruleForm].validate();
  60. //在实际使用中,会报错。validate未定义
  61. //
  62. //使用this.$refs.ruleForm.validate(); 成功。
  63. this.$refs.ruleForm.validate((valid) => {
  64. if (valid) {
  65. alert('submit!');
  66. } else {
  67. console.log('error submit!!');
  68. return false;
  69. }
  70. });
  71. },
  72. resetForm(formName) {
  73. this.$nextTick(function() {
  74. this.$refs[formName].resetFields();
  75. })
  76. }
  77. }
  78. }
  79. var Ctor = Vue.extend(Main)
  80. new Ctor().$mount('#app')

以上介绍了" (vue.js)element ui 表单验证 this$refs[formName]validate"里面的小坑的问题解答,希望对有需要的网友有所帮助。

转载于:https://www.cnblogs.com/huge1122/p/11286860.html

关于vue.js element ui 表单验证 this.$refs[formName].validate()的问题相关推荐

  1. vue项目中iview表单验证 this.$refs[name].validate(valid = { }无效

    验证成功的时候没有添加 callback(); 加上该方法就可以了 转载于:https://www.cnblogs.com/qiandong1933/p/qiandong19333.html

  2. Element UI——表单验证输入的数字检测出来是string解决方案

    问题描述 打印 判断类型 问题分析 解决方案 数字类型的验证需要在 v-model 处加上 .number 的修饰符,这是 Vue 自身提供的用于将绑定值转化为 number 类型的修饰符. < ...

  3. element ui 表单验证为正整数

    很多时候都会用表单中输入正整数的情况,在element ui中可以用el-input-number 标签来显示输入框是number类型的,或者type="number"也可以的,但 ...

  4. element ui 表单验证通过后没有绿色框 求解 (已解)

    使用element自带的表单验证. 输入框选中状态边框为蓝色, 输入框输入错误的时候边框为红色, 输入正确的时候边框为绿色. 但是有的时候输入正确没有出现绿色(红色和蓝色状态能正常出现) 我的相关代码 ...

  5. element ui表单验证,验证通过但是不进if(valid){}步骤

    表单自定义验证,如图: data中定义的验证规则: var validatePass = (rule, value, callback) => {if (value === '') {retur ...

  6. element ui表单验证

    这里通过一个实例来说明表单验证: 如上图所示,我们点击"添加新用户"弹出弹框 这里只讲弹框里面的校验代码: <template><div id="cre ...

  7. vue开源Element UI表单设计及代码生成器

    1 可视化设计器 设计器基于Element UI ,可通过点击或拖拽的方式设计基本表单, 设计器生成的代码可直接运行在基于 Element 的 vue 项目中. github仓库   https:// ...

  8. element ui 表单验证残留提示处理

    问题:如果vue的同一个页面拥有两个表单.验证第一个表单时没有通过就切换到第二个,那么第二个表单会出现验证错误的信息 点击编辑框 解决方法:添加表单重置验证 我们可以通过为两个表单添加ref属性 之后 ...

  9. element -ui 表单验证 如果 需要验证的v-model 是对象中的对象 总是提示没有填写....

    如果需要验证的是以上方式那么 rules的书写方法需要该改变 ? 转载于:https://www.cnblogs.com/wxqworld/p/11301139.html

最新文章

  1. 广联达5代锁与4代锁有何区别_BVVB是什么线?BV与BVVB有何区别?
  2. Ajax 基础——未完待续
  3. com.android.ddmlib.ShellCommandUnresponsiveException
  4. webuploader在bootstrap模态对话框中选择文件按钮无效的问题
  5. 【代码】synchronized是可重入锁并且多个sync代码块顺序执行
  6. QT的QCategoryAxis类的使用
  7. 贪心算法之用优先队列解决最短路径问题(Dijkstra算法)
  8. 美国计算机协会ACM子刊中国特辑:中国的人工智能初创企业
  9. kafka监控工具Burrow安装
  10. 青山遮不住——2020的10大技术趋势
  11. JZOJ5465. 【NOIP2017提高A组冲刺11.9】道路重建
  12. Simulink 环境基础知识(五)--编程建模基础知识
  13. 2019 年第 29 周 DApp 影响力排行榜 | TokenInsight
  14. vue.js 动态合并单元格问题
  15. 车载导航应用的哪些计算机知识,三维模拟智能车载导航系统的设计与实现
  16. java 算出下一个工作日_如何计算JAVA中两个不同日期之间的工作日(不包括周末)?...
  17. 上市公司广告宣传推广费-含沪深A股主板、中小企业板等(2011-2020年)
  18. 【重识云原生】第六章容器基础6.4.9.2节——使用 Service 连接到应用
  19. 【C数据类型】基本数据类型
  20. Atcoder Beginner Contest 260D - Draw Your Cards 解题报告

热门文章

  1. 【华科考研机试题】二叉树遍历(递归版 详细注释)
  2. md5可以解密吗_Python训练营作业1:加密解密
  3. 16位汇编 使用word ptr和byte ptr的寻址方式
  4. 内存区域的划分和分配
  5. Pixhawk原生固件PX4之顶层软件结构
  6. pixhawk position_estimator_inav.cpp思路整理及数据流
  7. 静态分配和动态分配内存的区别
  8. 优先队列/单调队列 - 滑动窗口最大值
  9. c语言函数汉诺塔不用move,C语言——汉诺塔问题(函数递归)
  10. 运行Python程序的2种方式