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基础知识回顾
Aug 16 PHP
PHP数据类型的总结分析
Jun 13 PHP
PHP实现的memcache环形队列类实例
Jul 28 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
Smarty简单生成表单元素的方法示例
May 23 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
Sep 09 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
PHP实现百度人脸识别
May 06 PHP
PHP学习记录之常用的魔术常量详解
Dec 12 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 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读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
video.js添加自定义组件的方法
2020/12/09 Javascript
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
如何给Python代码进行加密
2020/01/10 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
C面试题
2015/10/08 面试题
九年级家长会邀请函
2014/01/15 职场文书
迎新晚会邀请函
2014/02/01 职场文书
乡镇办公室工作决心书
2014/03/11 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
趵突泉导游词
2015/02/03 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python