You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bootstrap 5与Vue.js结合使用时Checkbox无法正常点击的问题

问题原因及解决方案

1. 复选框无法点击的核心问题

你没有给复选框绑定勾选状态,仅绑定了点击事件,点击后没有同步更新复选框的checked属性,所以视觉上没有反馈,看起来像点击无效。同时你用纯数字作为id属性值,也可能和label的for属性绑定出现兼容问题。

2. 修正后的代码示例

模板部分:

<ul class="widget-list widget-filter-list list-unstyled pt-1" style="max-height: 11rem;"
    data-simplebar data-simplebar-auto-hide="false">
  <li v-for="(brand, index) in brands" :key="index"
      class="widget-filter-item d-flex justify-content-between align-items-center mb-1">
    <div class="form-check">
      <input 
        v-model="selectedBrands"
        class="form-check-input"
        type="checkbox"
        :value="brand.id"
        :id="`brand-${index}`"
        @change="handleBrands"
      >
      <label class="form-check-label widget-filter-item-text" :for="`brand-${index}`">
        {{ brand.brand }}
      </label>
    </div>
  </li>
</ul>

脚本逻辑部分:

export default {
  data() {
    return {
      // 你的原有品牌列表数据
      brands: [],
      // 新增:存储选中的品牌id的响应式数组
      selectedBrands: []
    }
  },
  methods: {
    handleBrands() {
      // 直接取selectedBrands即可拿到所有选中的品牌id,无需操作DOM
      console.log(this.selectedBrands)
    }
  }
}

3. 原DOM操作失败的原因

你调用document.getElementById('index')是获取id为字符串index的元素,但你实际每个复选框的id是0、1、2这类动态数字,所以永远无法匹配到对应元素。Vue为数据驱动框架,不推荐直接操作DOM获取状态,直接从绑定的响应式数据取值即可。

额外排查项

如果修改后仍无法点击,可检查simplebar插件是否拦截了点击事件,给input标签添加@click.stop修饰符阻止事件冒泡即可。


内容的提问来源于stack exchange,提问作者Andrés Lopez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:54:01