码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • elementUI_el-radio踩坑_设置点击事件会触发两次


    el-radio设置点击事件会触发两次

            • 问题描述
            • 代码实现
            • 问题
            • 原因
            • 解决

    问题描述

    使用了elementUI的单选按钮,点击按钮时对数据进行校验

    • [1]若校验成功,则打开弹框;
    • [2]若是校验失败,则给出提示;
    代码实现
    • <el-radio-group v-model="switch">
          <el-radio border :label='1' @click.native='chooseIdClick(1)'>手动选择el-radio>
          <el-radio border :label='2' @click.native='chooseIdClick(2)'>手动输入el-radio>
      el-radio-group>
      
      • 1
      • 2
      • 3
      • 4
    • chooseIdClick(val){
          if(!this.form.prdouct_info.length){
            this.$message.warning('请先选择产品~')
            return
          }
          if(val==1){
            this.visible1 = true
          }else{
            this.visible2 = true
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
    问题

    当运行时,点击按钮,发现chooseIdClick方法执行了两次;

    • 在这里插入图片描述
    原因

    与lable标签的默认事件有关

    我发现elementUI的el-radio标签在封装过程中是这样的

    • <label>
          <span> <input type='radio' /> span>
          <span> 手动选择 span>
      label>
      
      • 1
      • 2
      • 3
      • 4
    • 方法是添加在label标签上的;

    所以用户点击之后的执行是这样的

    • 点击按钮
      • [1]点击了label标签,触发chooseIdClick方法;
      • [2]点击了label标签,label标签与input标签关联 ->相当于点击input->input通过冒泡触发了chooseIdClick方法;
    • 因此一共触发了两次chooseIdClick方法;
    解决

    chooseIdClick方法无需执行两次,仅需要在input点击时触发即可;

    <el-radio-group v-model="switch">
        <el-radio border :label='1' @click.native='chooseIdClick($event,1)'>手动选择el-radio>
        <el-radio border :label='2' @click.native='chooseIdClick($event,2)'>手动输入el-radio>
    el-radio-group>
    
    • 1
    • 2
    • 3
    • 4
    chooseIdClick(e,val){
        if(e.target.tagName != 'INPUT'){
            return
        }
        if(!this.form.prdouct_info.length){
          this.$message.warning('请先选择产品~')
          return
        }
        if(val==1){
          this.visible1 = true
        }else{
          this.visible2 = true
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    自定义vue组件发布npm仓库
    chromium通信系统-mojo系统(一)-ipcz系统基本概念
    使用Spark的foreach算子及UDTF函数实现MySQL数据的一对多【Java】
    centos下安装nginx
    RHCE(四)--- DNS服务的正反向解析配置
    【云原生与5G】微服务加持5G核心网
    java-php-python-基于Springboot的水世界乐园管理系统计算机毕业设计
    论文参考文献的引入要留意什么信息呢?
    YOLOv7中的数据集处理【代码分析】
    MKS SERVO28C 闭环步进电机 使用说明
  • 原文地址:https://blog.csdn.net/qq_43260366/article/details/126351408
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号