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代码
Apr 09 PHP
PHP安全技术之 实现php基本安全
Sep 04 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
Jun 20 PHP
PHP获取文件的MD5值并判断是否被修改的例子
Jun 19 PHP
php中get_meta_tags()、CURL与user-agent用法分析
Dec 16 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
Mar 05 PHP
PHP+MySQL存储数据常见中文乱码问题小结
Jun 13 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
php车辆违章查询数据示例
Oct 14 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
php封装的验证码类分享
Feb 26 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 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
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
php &amp;&amp; 逻辑与运算符使用说明
2010/03/04 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
PHP分享图片的生成方法
2018/04/25 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
JavaScript File分段上传
2016/03/10 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
ES6 async、await的基本使用方法示例
2020/06/06 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
便捷提取python导入包的属性方法
2018/10/15 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
Python接口测试get请求过程详解
2020/02/28 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
大学四年学习的自我评价分享
2013/12/09 职场文书
商场收银员岗位职责
2015/04/07 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python