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 相关文章推荐
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
PHP 超链接 抓取实现代码
Jun 29 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
php实现微信公众平台账号自定义菜单类
Oct 11 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
PHP分页显示的方法分析【附PHP通用分页类】
May 10 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 PHP
php-fpm中max_children的配置
Mar 15 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
Dec 12 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
laravel框架使用极光推送消息操作示例
Feb 15 #PHP
laravel框架使用阿里云短信发送消息操作示例
Feb 15 #PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 #PHP
You might like
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
趣天网日本站:Qoo10 JP
2019/09/18 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
小学师德标兵先进事迹材料
2014/05/25 职场文书
文艺晚会策划方案
2014/06/11 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
nginx内存池源码解析
2021/11/20 Servers
vue router 动态路由清除方式
2022/05/25 Vue.js