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 相关文章推荐
人大复印资料处理程序_输入篇
Oct 09 PHP
PHP之变量、常量学习笔记
Mar 27 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
flash用php连接数据库的代码
Apr 21 PHP
php和jquery实现地图区域数据统计展示数据示例
Feb 12 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
Apr 14 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
浅析PHP中Session可能会引起并发问题
Jul 23 PHP
php支持断点续传、分块下载的类
May 02 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
laravel 实现设置时区的简单方法
Oct 10 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
在数据量大(超过10万)的情况下
2007/01/15 PHP
jQuery 源码分析笔记
2011/05/25 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
PHP多维数组排序array详解
2017/11/21 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
Dom与浏览器兼容性说明
2010/10/25 Javascript
浅析javascript闭包 实例分析
2010/12/25 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
Python 数据结构之旋转链表
2017/02/25 Python
基于Python实现用户管理系统
2019/02/26 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
python实现单机五子棋
2020/08/28 Python
django使用多个数据库的方法实例
2021/03/04 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
建材业务员岗位职责
2013/12/08 职场文书
异地年检委托书范本
2014/09/24 职场文书
罚款通知怎么写
2015/04/22 职场文书
校友会致辞
2015/07/30 职场文书
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
总结几个非常实用的Python库
2021/06/26 Python
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏