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 相关文章推荐
web server使用php生成web页面的三种方法总结
Oct 28 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
Apr 09 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
Sep 27 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
Apr 03 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
Jul 01 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
如何利用http协议发布博客园博文评论
Aug 03 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
php生成微信红包数组的方法
Sep 05 PHP
利用ajax+php实现商品价格计算
Mar 31 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
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
2013/06/25 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
PHP常量及变量区别原理详解
2020/08/14 PHP
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
Python数据库的连接实现方法与注意事项
2016/02/27 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
Python读取stdin方法实例
2019/05/24 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
德国团购网站:Groupon德国
2018/03/13 全球购物
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
幼儿园毕业致辞
2015/07/29 职场文书
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL