美文网首页
label标签与input间的小坑

label标签与input间的小坑

作者: cyanl77 | 来源:发表于2019-01-08 15:51 被阅读0次

现场如下,需求是根据checkbox的选择状况做一些数组的过滤
html:

<div class="type-choice" @click="dosomething">
          <input type="checkbox" id="a"><label for="a" v-model='a'>BOXA</label>
          <input type="checkbox" id="b"><label for="b" v-model='b'>BOXB</label>
</div>

js(vue):

data () {
    return {
        a: false,
        b: false
    }
},
methods: {
    dosomething () {
          //consolelog一些值,重复打印两次
    }
}

  发现每次进行一次点击会执行两次点击事件的回调。
  通过对e.target打印,发现label的此种写法,即通过for与input绑定并事件委托至父节点,点击一次label后会立刻触发对应input的点击事件,由于事件冒泡机制的存在,父节点所绑定的点击事件会被触发两次。
  针对以上现象,解决方法是判断e.target为input或label时再执行事件处理的核心逻辑(取决于是否要对input选中后的数据进行处理),加入if判断后的代码与打印如下。

dosomething (e) {
    console.log(e.target);
    if($(e.target).is('label')) {
          //consolelog一些值
    }
}
image.png

相关文章

  • label标签与input间的小坑

    现场如下,需求是根据checkbox的选择状况做一些数组的过滤html: js(vue):   发现每次进行一次点...

  • Form表单练习

    label 与 input label:标签,在表单中与 input 标签绑定使用。eg:1.显式联系 —— la...

  • label和input绑定

    label标签包裹input标签,点击label时,label两次响应,即label本身触发和input触发后冒泡...

  • label 与 input 显示同一行

    修改之前,label 与 input内容换行显示: 后来在label标签中添加:style="float:left...

  • HTML 表单之label标签介绍

    转自:HTML 表单之label标签介绍label标签介绍label标签为input元素定义标注(标记),它不会向...

  • 利用纯CSS制作轮播图

    做这种轮播图我们先要理解checked标签,label标签。 label: 标签为 input 元素定义标注(标记...

  • 零碎知识点

    用Label标签把input标签包裹起来的好处是:当鼠标点击label标签域时,鼠标自动聚焦到input,省去了f...

  • HTML+CSS3实现switch开关

    input标签 CheckBox类型,label伪元素

  • HTML----第三次笔记

    3.1label标签 label标签用于对input标签定义标注 作用:用于绑定一个表单元素,当点击label时,...

  • 定义和用法 标签为 input 元素定义标注(标记)。label 元素不会向用户呈现任何特殊效果。不过,它为鼠标用...

网友评论

      本文标题:label标签与input间的小坑

      本文链接:https://www.haomeiwen.com/subject/zuzvrqtx.html