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图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
Dec 02 PHP
php生成二维码的几种方式整理及使用实例
Jun 03 PHP
PHP框架Swoole定时器Timer特性分析
Aug 19 PHP
PHP基于CURL进行POST数据上传实例
Nov 10 PHP
PHP间隔一段时间执行代码的方法
Dec 02 PHP
PHP PDO fetch 模式各种参数的输出结果一览
Jan 07 PHP
windows下apache搭建php开发环境
Aug 27 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
Nov 11 PHP
深入理解PHP之OpCode原理详解
Jun 01 PHP
thinkPHP多表查询及分页功能实现方法示例
Jul 03 PHP
php和asp语法上的区别总结
May 12 PHP
Laravel配合jwt使用的方法实例
Oct 25 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选项与信息函数的使用详解
2013/05/10 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
js读取本地文件的实例
2017/12/22 Javascript
Mac下安装vue
2018/04/11 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
python快速查找算法应用实例
2014/09/26 Python
Python实现购物车购物小程序
2018/04/18 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
网游商务专员求职信
2013/10/15 职场文书
学习雷锋寄语大全
2014/04/11 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
女生抽烟检讨书
2014/10/05 职场文书
公务员年终个人总结
2015/02/12 职场文书
会计稽核岗位职责
2015/04/13 职场文书
幼儿园见习总结
2015/06/23 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis