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

Laravel中Select2组件无法应用到表单的问题求助

解决Laravel中Select2组件无法正常显示的问题

按以下步骤排查并修复代码中的问题:

1. 移除重复的Select2资源引用

你同时引入了两个不同版本的Select2 CSS和JS,版本冲突会导致组件异常。保留其中一套稳定版本即可:

<!-- 仅保留一套Select2资源 -->
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

2. 补充jQuery依赖

Select2必须依赖jQuery才能运行,你的代码中未引入jQuery,这是组件无法初始化的核心原因。在Select2的JS之前添加jQuery引用:

<!-- 在Select2 JS前引入jQuery -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

3. 规范资源加载位置(推荐)

将CSS和JS通过@push注入到布局的对应区域,避免在内容区块中加载资源,确保渲染顺序正确:

@extends('layouts.app')

@push('styles')
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
@endpush

@section('title', 'Kegiatan')  
@section('content')
  <form action="{{ route('admin.kegiatan.store')  }}" method="POST" enctype="multipart/form-data">
    @csrf
    <div class="form-group">
      <label for="id_tamu" style="font-weight: bold;">Nama Tamu</label>
      <select class="form-control select2" name="id_tamu[]" multiple="multiple">
        @foreach($data2 as $datas2)
          <option value="{{ $datas2->id_tamu }}">{{ $datas2->nama_tamu }}</option>
        @endforeach
      </select>
    </div>
  </form>
@endsection

@push('scripts')
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script>
    $(document).ready(function() {
        $('.select2').select2({
            placeholder: "Pilih Nama Tamu", // 可选:添加占位提示
            allowClear: true // 可选:允许清空选择
        });
    });
</script>
@endpush

注:需确保你的layouts.app模板中已定义@stack('styles')和@stack('scripts'),分别放在<head>和<body>末尾区域。

4. 检查浏览器控制台报错

打开浏览器开发者工具(F12)的Console标签,查看具体报错:

  • 若提示$ is not defined:说明jQuery未加载成功,检查引入路径或加载顺序
  • 若提示select2 is not a function:说明Select2的JS未正确加载,或与其他JS插件冲突

5. 验证DOM元素匹配

在初始化代码前添加测试代码,确认能找到目标元素:

console.log($('.select2').length); // 输出大于0则说明元素存在

内容的提问来源于stack exchange,提问作者Rakhmad Maulana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:55:16