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>
    
  • chooseIdClick(val){
        if(!this.form.prdouct_info.length){
          this.$message.warning('请先选择产品~')
          return
        }
        if(val==1){
          this.visible1 = true
        }else{
          this.visible2 = true
        }
    }
    
问题

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

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

lable标签的默认事件有关

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

  • <label>
        <span> <input type='radio' /> </span>
        <span> 手动选择 </span>
    </label>
    
  • 方法是添加在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>
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
    }
}
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element UI中,可以使用`@click.native`来绑定`el-radio`的点击事件。例如,在模板中,可以这样写: ```html <el-radio :label="1" @click.native="handleClick">测试单选</el-radio> ``` 然后在Vue实例中定义`handleClick`方法来处理点击事件: ```javascript methods: { handleClick() { // 处理点击事件的逻辑 } } ``` 通过这种方式,当用户点击`el-radio`时,`handleClick`方法被调用。你可以在`handleClick`方法中编写你需要的逻辑代码。 #### 引用[.reference_title] - *1* [点击elementuiel-radio内部的标签不触发外部的事件](https://blog.csdn.net/weixin_38680881/article/details/119352497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [elementuiel-radio-button双击出现阴影问题](https://blog.csdn.net/weixin_44786530/article/details/127554816)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【vue+elementuiel-radio单选框默认选中以及v-model绑定值问题](https://blog.csdn.net/qq_44655358/article/details/113937363)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值