this.$refs.form.validate() 不执行问题的解决办法

这篇具有很好参考价值的文章主要介绍了this.$refs.form.validate() 不执行问题的解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:

使用以下方法获取校验状态的时候,一直获取不到,console没有结果输出

this.$refs.form.validate().then(valid => {
  console.log(valid)
})

原因:

①存在没有加入验证规则的 prop

如:在代码中写了很多这样的 prop,作为需要验证的字段:

<FormItem label="URL过滤" prop="groupId">

但是,在定义的 rules 里面没有出现该 prop:

rules: {
  schemaId: [{ required: true, message: '必填'}],
}

注意:一般来讲,多加上 prop 不会有问题,还有可能是自定义的校验有问题

②  自定义校验规则存在没有调用到 callback() 的情况

如:没有验证 value 为空的情况:

    const validateFilter = (rule, value, callback) => {
     if (!value.every(item => HTTPHEADER_KEYWORD_REGEXP.test(item))) {
        callback(new Error('关键字格式错误:每个最长255字符,不能包含中文'))
      } else if (value.join('').length > 2048) {
        callback(new Error('错误:总长度不能超过2048字符'))
      } else {
        callback()
      }
    }

上述判断中没有考虑到 value 为空的情况也要执行一次 callback(),因此当 value 为空时校验状态也不执行。文章来源地址https://www.toymoban.com/news/detail-518196.html

    const validateFilter = (rule, value, callback) => {
      if (!value) {
        callback()
      } else if (!value.every(item => HTTPHEADER_KEYWORD_REGEXP.test(item))) {
        callback(new Error('关键字格式错误:每个最长255字符,不能包含中文'))
      } else if (value.join('').length > 2048) {
        callback(new Error('错误:总长度不能超过2048字符'))
      } else {
        callback()
      }
    }

解决思路:

  • 根据框架文档,检查代码书写规范
  • 打印this.$refs.form.validate(),看状态,如果状态是pedding(待办),还没有执行完成,继续看校验规则问题,是否考虑全面需要执行 callback() 的情况。

到了这里,关于this.$refs.form.validate() 不执行问题的解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue element form rules表单规则验证,输入框有值,但验证始终不消失问题的个人解决办法

             做项目时在el-form中遇到了设定了表单验证规则,但只要输入值就显示未输入的情况:         根据网上查找的结果,rules中的名称要与from-item中的prop别名相同,看了一下没问题    后来在网上看到这篇文章:vue element form表单规则验证,有值,但验证始终不消失

    2024年02月12日
    浏览(49)
  • 【Vue】Vue的$ref属性为空对象或者为undefined问题及解决办法(涵盖uniapp/H5/微信小程序)

    目录 问题:获取this.$refs为空对象或者为undefined 原因一:在uniapp中,非H5端只能用于获取自定义组件,不能用于获取内置组件实例(如:view、text) 解决方法:ref在非H5端使用在自定义的组件 原因二:使用了版本过低的调试基础库 原因三:ref组件使用了条件渲染,即v-if、v-

    2024年02月09日
    浏览(41)
  • The engine “node“ is incompatible with this module. Expected version 问题解决办法

    安装一个组件库总是报错: 手动右键删除 node_modules 文件夹,清空了 npm 缓存: 发现还是不行。 后来在网上找到了解决方案:忽略错误。 终端输入命令: 再重新安装依赖,运行项目就可以了:

    2024年02月12日
    浏览(42)
  • 【前端】解决element-ui的form组件resetFields()方法不生效的问题

    使用 element-ui 的 form 组件,在输入栏较多的时候,有时 resetFields 只能重置一部分输入框的值 给每个值赋值初始值为空即可 例如,需要清除的 :model=\\\"queryForm.bgnTime\\\" 、 :model=\\\"queryForm.endTime\\\" 等一系列的值,那么就不要只定义 queryForm:{} ,而是要把对象下的各个属性赋值初值为空

    2024年02月15日
    浏览(53)
  • message from server: “Host is not allowed to connect to this MySQL server“问题的解决办法

    数据库安装完成后,默认是不能远程登陆的,只能在本地用localhost 或者127.0.0.1登录访问,如果需要远程登录,则需要修改mysql设置,具体修改方式: 1、本地登录mysql:  2、查看数据库中mysql表中的权限设置: 3、修改root用户权限: 4、此时,root用户的权限已经允许非localhos

    2024年02月16日
    浏览(38)
  • 解决:this.$refs引用子组件报错 is not a function

    问题描述: vue通过this.$refs引用子组件出现undefined或者is not a function的错误 报错如下: _this3.$refs.fileUpload.changeFileList is not a function 问题分析: 问题1:出现undefined错误 包含子组件的标签需要放在中第一个子标签的子标签中,而且需要设置ref属性, 因为父组件逻辑代码中是通过

    2024年02月11日
    浏览(45)
  • 登陆校验解决前端success回调函数始终执行问题

    有一串前端js登陆代码: 和后端代码: 存在问题: 不管前端传递的账号密码是否正确,都会成功调用success回调函数,从而导致无法判断账号密码是否匹配成功。 解决办法: 要避免无论账号密码是否正确都调用success回调函数,可以在后端代码中对账号密码进行验证,只有在

    2024年02月14日
    浏览(41)
  • 【C++】由于找不到xxx.dll,无法继续执行代码,重新安装程序可能会解决此问题。(解决办法)

    开发中经常会出现“由于找不到xxx.dll,无法继续执行代码,重新安装程序可能会解决此问题。”的现象。 这里介绍一种,解决这类问题的最佳方法,非常方便快捷。见文章末尾! 由于找不到pcl_common_debug.dll,无法继续执行代码,重新安装程序可能会解决此问题。 由于找不到

    2024年02月09日
    浏览(51)
  • vue中使用this.$refs获取不到子组件的方法,属性方法都为undefined的解决方法

    因为注册了多个ref,获取是不能单单知识refs.xxx,需要使用数组和索引来获取具体一个组件refs[index].xxx 额……就像这样😐 好这么一写,导致前两个组件都无法正常使用…… 页面也会有这个报错: 组件名 - did you register the component correctly? For recursive components, make sure to provide

    2024年02月13日
    浏览(50)
  • uniapp 组件引用 TypeError: this.$refs.xxx is not a function 解决方法(全)

    因为自己的项目中,某些常用模块自己定义了组件,使用时 常出现 TypeError: this.$refs.xxx is not a function (即没有xxx这个方法),结合网友和自身遇到的问题,得出三种方法 第一种:引用注册  即 在页面中 import 组件。  解决方法:查看是否组件引用正确。 第二种:组件在循环

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包