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
Cannot modify header information错误解决方法
Oct 08 PHP
javascript,php获取函数参数对象的代码
Feb 03 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
PHP魔术方法的使用示例
Jun 23 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
php opendir()列出目录下所有文件的实例代码
Oct 02 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
关于PHP中interface的用处详解
Jul 26 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 base64编码后解码乱码的解决办法
2014/06/19 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
vue弹窗消息组件的使用方法
2020/09/24 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
Vue的自定义组件不能使用click方法的解决
2020/07/28 Javascript
深入Python解释器理解Python中的字节码
2015/04/01 Python
深入浅析Python中的yield关键字
2018/01/24 Python
python 调用有道api接口的方法
2019/01/03 Python
python实现小世界网络生成
2019/11/21 Python
python取均匀不重复的随机数方式
2019/11/27 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
python实现微信打飞机游戏
2020/03/24 Python
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
高中毕业的自我鉴定
2013/12/09 职场文书
结婚邀请函范文
2014/01/14 职场文书
一月红领巾广播稿
2014/02/11 职场文书
团拜会策划方案
2014/06/07 职场文书
实验室标语
2014/06/21 职场文书
vue Element-ui表格实现树形结构表格
2021/06/07 Vue.js
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
vue使用element-ui按需引入
2022/05/20 Vue.js
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS