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 相关文章推荐
自动分页的不完整解决方案
Jan 12 PHP
mysql中存储过程、函数的一些问题
Feb 14 PHP
php购物车实现代码
Oct 10 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
PHP获取http请求的头信息实现步骤
Dec 16 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
php获取从百度搜索进入网站的关键词的详细代码
Jan 08 PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
Sep 19 PHP
PHP strcmp()和strcasecmp()的区别实例
Nov 05 PHP
php输出图像的方法实例分析
Feb 16 PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 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在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
Javascript的并行运算实现代码
2010/11/19 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
vue实现拖拽效果
2019/12/23 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python pickle模块用法实例
2015/04/14 Python
Python基本语法经典教程
2016/03/11 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
Python实现读写INI配置文件的方法示例
2018/06/09 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
什么是会话Bean
2015/05/14 面试题
IBatis持久层技术
2016/07/18 面试题
普通院校学生的自荐信
2013/11/27 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
人力资源主管的岗位职责
2014/03/15 职场文书