如何设置Laravel框架下select2多选插件默认选中特定选项?

更新于
2026-08-27 06:48:14
30阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计868个文字,预计阅读时间需要4分钟。

本文实例讲述了Laravel框架结合select2多选插件初始化默认选中项的操作。以下内容供大家参考:

项目中有发送消息功能,需要通过搜索,多选用户,指定发送人。

使用select2插件:

1. 在项目中引入select2的CSS和JS文件:

2. 创建select元素并添加data-live-search属性,以便实现搜索功能:

张三 李四 王五

3. 初始化select2插件:

javascript$(document).ready(function() { $('#userSelect').select2({ placeholder: 请选择用户, allowClear: true });});

4. 设置默认选中项:

javascript$(document).ready(function() { $('#userSelect').select2({ placeholder: 请选择用户, allowClear: true, data: [ { id: 1, text: 张三 }, { id: 2, text: 李四 } ] });});

以上步骤实现了Laravel框架结合select2多选插件初始化默认选中项的操作。在实际项目中,根据需求调整相关代码即可。

本文实例讲述了laravel框架select2多选插件初始化默认选中项操作。分享给大家供大家参考,具体如下:

项目中有发送消息功能,需要能通过搜索,多选用户,来指定发送人。使用 select2 插件来完成。

select2 的 html 代码如下:

<div class="form-group" id="member_group"> <label class="col-lg-3 control-label required">选择用户 <span class="required">*</span> </label> <div class="col-lg-4"> <select class="form-control" name="user_id[]" id="member_select" multiple="multiple"></select> </div> </div>

select2 的 js 代码如下:

//选择用户 $("#member_select").select2({ ajax: { //请求的URL url: "{{ route('member.index') }}", //返回的数据类型 dataType: "json", //延迟时间,毫秒 delay: 500, //是否缓存 cache: true, //查询数据 data: function (params) { //params.term就是你搜索输入的参数 return { search: params.term, page: params.page || 1 }; }, //请求结果回调函数,data就是后端返回的数据 processResults: function (data, params) { var data = data.data; var results = []; //循环数据,将数据压入results中 //注意数据必须要有二个属性,id和text,分别对应option的value和文本 //网上有些说无法选中元素,请先检查这里,你是否设置了id,并且不为空 $(data.data).each(function (i, obj) { results.push({ id: obj.id, text: obj.name }); }); return { results: results, pagination: { more: (data.current_page * data.per_page) < data.total } }; } }, placeholder: '选择用户', //是否多选 multiple: true, allowClear: true });

后端返回的数据如下,直接使用 laravel 的 paginate() 方法 返回分页数据。

{ "status_code":200, "message":"查询成功", "data":{ "current_page":1, "data":[ { "id":2006, "name":"用户1" }, { "id":2005, "name":"用户3" }, { "id":2004, "name":"用户3" } ], "first_page_url":"test.me/member/index?page=1", "from":1, "last_page":1, "last_page_url":"test.me/member/index?page=1", "next_page_url":"test.me/member/index?page=1", "path":"test.me/member/index", "per_page":1, "prev_page_url":null, "to":null, "total":3 } }

在编辑消息时,我们需要查看,这条消息发送给了哪些人,这就需要进入编辑页面时,让 select2 默认选中用户。

网上说通过如下方法可以选中。

$("#spread_select").val([1, 2]).trigger("change");

但是我们这里select2的option是通过ajax动态加载的,刚进页面时,select2的ajax根本没有触发,导致select2中没有option元素,更无法被选中。

我们通过下面的方式,来实现默认选中。

var selObj = [ {"id": 1, "name": "小徐"}, {"id": 2, "name": "小张"}, {"id": 3, "name": "小明"}, ]; (function initSel(selObj) { if (selObj) { for (var ix = 0; ix < selObj.length; ix++) { var item = selObj[ix]; var option = new Option(item.name, item.id, true, true); $("#member_select").append(option); } $("#member_select").trigger('change'); } })(selObj);

selObj中的数据,可以通过PHP后端生成好后,渲染到页面,然后通过JSON.parse()解析成JSON对象。

更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

本文共计868个文字,预计阅读时间需要4分钟。

本文实例讲述了Laravel框架结合select2多选插件初始化默认选中项的操作。以下内容供大家参考:

项目中有发送消息功能,需要通过搜索,多选用户,指定发送人。

使用select2插件:

1. 在项目中引入select2的CSS和JS文件:

2. 创建select元素并添加data-live-search属性,以便实现搜索功能:

张三 李四 王五

3. 初始化select2插件:

javascript$(document).ready(function() { $('#userSelect').select2({ placeholder: 请选择用户, allowClear: true });});

4. 设置默认选中项:

javascript$(document).ready(function() { $('#userSelect').select2({ placeholder: 请选择用户, allowClear: true, data: [ { id: 1, text: 张三 }, { id: 2, text: 李四 } ] });});

以上步骤实现了Laravel框架结合select2多选插件初始化默认选中项的操作。在实际项目中,根据需求调整相关代码即可。

本文实例讲述了laravel框架select2多选插件初始化默认选中项操作。分享给大家供大家参考,具体如下:

项目中有发送消息功能,需要能通过搜索,多选用户,来指定发送人。使用 select2 插件来完成。

select2 的 html 代码如下:

<div class="form-group" id="member_group"> <label class="col-lg-3 control-label required">选择用户 <span class="required">*</span> </label> <div class="col-lg-4"> <select class="form-control" name="user_id[]" id="member_select" multiple="multiple"></select> </div> </div>

select2 的 js 代码如下:

//选择用户 $("#member_select").select2({ ajax: { //请求的URL url: "{{ route('member.index') }}", //返回的数据类型 dataType: "json", //延迟时间,毫秒 delay: 500, //是否缓存 cache: true, //查询数据 data: function (params) { //params.term就是你搜索输入的参数 return { search: params.term, page: params.page || 1 }; }, //请求结果回调函数,data就是后端返回的数据 processResults: function (data, params) { var data = data.data; var results = []; //循环数据,将数据压入results中 //注意数据必须要有二个属性,id和text,分别对应option的value和文本 //网上有些说无法选中元素,请先检查这里,你是否设置了id,并且不为空 $(data.data).each(function (i, obj) { results.push({ id: obj.id, text: obj.name }); }); return { results: results, pagination: { more: (data.current_page * data.per_page) < data.total } }; } }, placeholder: '选择用户', //是否多选 multiple: true, allowClear: true });

后端返回的数据如下,直接使用 laravel 的 paginate() 方法 返回分页数据。

{ "status_code":200, "message":"查询成功", "data":{ "current_page":1, "data":[ { "id":2006, "name":"用户1" }, { "id":2005, "name":"用户3" }, { "id":2004, "name":"用户3" } ], "first_page_url":"test.me/member/index?page=1", "from":1, "last_page":1, "last_page_url":"test.me/member/index?page=1", "next_page_url":"test.me/member/index?page=1", "path":"test.me/member/index", "per_page":1, "prev_page_url":null, "to":null, "total":3 } }

在编辑消息时,我们需要查看,这条消息发送给了哪些人,这就需要进入编辑页面时,让 select2 默认选中用户。

网上说通过如下方法可以选中。

$("#spread_select").val([1, 2]).trigger("change");

但是我们这里select2的option是通过ajax动态加载的,刚进页面时,select2的ajax根本没有触发,导致select2中没有option元素,更无法被选中。

我们通过下面的方式,来实现默认选中。

var selObj = [ {"id": 1, "name": "小徐"}, {"id": 2, "name": "小张"}, {"id": 3, "name": "小明"}, ]; (function initSel(selObj) { if (selObj) { for (var ix = 0; ix < selObj.length; ix++) { var item = selObj[ix]; var option = new Option(item.name, item.id, true, true); $("#member_select").append(option); } $("#member_select").trigger('change'); } })(selObj);

selObj中的数据,可以通过PHP后端生成好后,渲染到页面,然后通过JSON.parse()解析成JSON对象。

更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。