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 MSSQL 存储过程的方法
Dec 24 PHP
PHP运行环境配置与开发环境的配置(图文教程)
Jun 04 PHP
解析php中heredoc的使用方法
Jun 17 PHP
利用PHP实现短域名互转
Jul 05 PHP
PHP获取当前url的具体方法全面解析
Nov 26 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
Oct 21 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
PHP中的流(streams)浅析
Jul 02 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
Django 标签筛选的实现代码(一对多、多对多)
Sep 05 PHP
PHP中使用mpdf 导出PDF文件的实现方法
Oct 22 PHP
通过代码实例解析PHP session工作原理
Dec 11 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
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
node在两个div之间移动,用ztree实现
2013/03/06 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
JS实现手写parseInt的方法示例
2017/09/24 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
python实现连接mongodb的方法
2015/05/08 Python
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
利用aardio给python编写图形界面
2017/08/21 Python
python实现报表自动化详解
2017/11/16 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
在django中自定义字段Field详解
2019/12/03 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
党员党性分析材料
2014/02/17 职场文书
寄语学生的话
2014/04/10 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
七年级作文之下雨天
2019/12/23 职场文书
服务器SVN搭建图文安装过程
2022/06/21 Servers
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL
基于redis+lua进行限流的方法
2022/07/23 Redis