laravel框架select2多选插件初始化默认选中项操作示例


Posted in PHP onFebruary 18, 2020

本文实例讲述了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":"http://test.me/member/index?page=1",
    "from":1,
    "last_page":1,
    "last_page_url":"http://test.me/member/index?page=1",
    "next_page_url":"http://test.me/member/index?page=1",
    "path":"http://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框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP数据库开发知多少
Oct 09 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
for循环连续求和、九九乘法表代码
Feb 20 PHP
php对数组排序代码分享
Feb 24 PHP
PHP借助phpmailer发送邮件
May 11 PHP
PHP通过串口实现发送短信
Jul 08 PHP
浅谈php的优缺点
Jul 14 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
Symfony2中被遗弃的getRequest()方法分析
Mar 17 PHP
Symfony2框架创建项目与模板设置实例详解
Mar 17 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
PHP使用Nginx实现反向代理
Sep 20 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 #PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 #PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 #PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 #PHP
php 函数中静态变量使用的问题实例分析
Mar 05 #PHP
php多进程中的阻塞与非阻塞操作实例分析
Mar 04 #PHP
php 中的信号处理操作实例详解
Mar 04 #PHP
You might like
PHP环境搭建最新方法
2006/09/05 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
[原创]图片分页查看
2006/08/28 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
Python中列表元素转为数字的方法分析
2016/06/14 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
Django框架 querySet功能解析
2019/09/04 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
关于python中导入文件到list的问题
2020/10/31 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
就业协议书
2014/09/12 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
世界气象日活动总结
2015/02/27 职场文书
公司内部升职自荐信
2015/03/27 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
中学生运动会广播稿
2015/08/19 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL