微信小程序check点击范围

微信小程序中的checkbox点击范围

img

img


微信小程序里的复选框点击任何部分都会选中,怎么做到只点击圈才能选中或取消

可以通过在wxml中对复选框的圆圈和标签分别绑定事件来实现只有圆圈被点击时才选中或取消:

<checkbox-group>
  <label class="checkbox-wrap">
    <checkbox class="checkbox-circle" value="{{value}}" bindchange="handleCheckboxChange"/>
    <text class="checkbox-label">{{label}}</text>
  </label>
</checkbox-group>

其中,checkbox-circle 类指定了圆圈的样式,checkbox-label 类指定了标签的样式。在JS中,可以获取到点击事件发生的位置,若点击位置是圆圈,则执行选中或取消操作,否则忽略。

Page({
  handleCheckboxChange: function (e) {
    // 判断点击的元素是否是圆圈
    let target = e.currentTarget;
    let isCircle = target.dataset.type === 'circle';
    
    // 如果是圆圈,则选中或取消选中
    let value = e.detail.value;
    if (isCircle) {
      this.setData({
        value: value
      });
    }
  }
})

checkbox-circle 元素上添加 data-type="circle",可以使点击事件传递到 handleCheckboxChange 函数时,得知点击的是圆圈还是标签。

checkbox外层加一个view,设置宽度试试