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 23 PHP
在PHP中使用反射技术的架构插件使用说明
May 18 PHP
php Static关键字实用方法
Jun 04 PHP
php标签云的实现代码
Oct 10 PHP
PHP设计模式之责任链模式的深入解析
Jun 13 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
通过PHP简单实例介绍文件上传
Dec 16 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
PHP会话控制实例分析
Dec 24 PHP
php和nginx交互实例讲解
Sep 24 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 PHP
swoole锁的机制代码实例讲解
Mar 04 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生成sitemap.xml地图函数
2013/11/13 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
python 实现插入排序算法
2012/06/05 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
Python实现常见的回文字符串算法
2018/11/14 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
干部培训简讯
2015/07/20 职场文书
预备党员表决心的话
2015/09/22 职场文书