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 相关文章推荐
常用表单验证类,有了这个,一般的验证就都齐了。
Dec 06 PHP
php 数组的合并、拆分、区别取值函数集
Feb 15 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
php echo()和print()、require()和include()函数区别说明
Mar 27 PHP
检查用户名是否已在mysql中存在的php写法
Jan 20 PHP
php实现的漂亮分页方法
Apr 17 PHP
PHP正则提取不包含指定网址的图片地址的例子
Apr 21 PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 PHP
php异常处理方法实例汇总
Jun 24 PHP
PHP Include文件实例讲解
Feb 15 PHP
PHP token验证生成原理实例分析
Jun 05 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 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函数,php爱好者站推荐
2007/03/19 PHP
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
PHP小教程之实现链表
2014/06/09 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
JS基于面向对象实现的选项卡效果示例
2016/12/20 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
Python中关于字符串对象的一些基础知识
2015/04/08 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
企业管理部经理岗位职责
2013/12/24 职场文书
简单租房协议书
2014/04/09 职场文书
2016情人节宣传语
2015/07/14 职场文书
KTV员工管理制度
2015/08/06 职场文书
关于车尾的标语大全
2015/08/11 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
关于保护环境的建议书
2019/06/24 职场文书
导游词之太湖
2019/10/08 职场文书
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android