`

select2异步加载数据

 
阅读更多

1.select2 加载数组数据
<script type="text/javascript">
var data = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }];

$(".js-example-data-array").select2({
  data: data
})

$(".js-example-data-array-selected").select2({
  data: data
})
</script>

<select class="js-example-data-array"></select>

<select class="js-example-data-array-selected">
  <option value="2" selected="selected">duplicate</option>
</select>

2.select2异步加载远程数据
select2的异步加载数据使用的jquery的ajax进行加载

html

 <select class="form-control select2" style="width: 100%;" id="exmaple2" onchange="changeselect()" name="example2">
                                  <option value=""></option>
                                </select>

js
$("#example2").select2({
   theme: "bootstrap",
   language: "zh-CN",
   placeholder: "",
               placeholderOption: "first",
   allowClear: true,
ajax: {
url: "/getProducts",
dataType: 'json',
delay: 250,
type:"post",
data: function(params) {
var query = {
q: params.term,
pageSize:config.select2PageSize,
page: params.page
      }
return query;
},
processResults: function(data, params) {
params.page = params.page || 1;
var results = [];
$.each(data.items,function(i,v){
    var o ={};
    o.id=v.oid;
    o.oid=v.oid;
    o.productName=v.productName;
    o.comment=v.comment;
    results.push(o);
});

return {
results: results,
pagination: {
more: (params.page * config.select2PageSize) < data.total_count
}
};
},
cache: true
},
escapeMarkup: function(markup) {
return markup;
},
minimumInputLength: 1,
maximumInputLength:20,
templateResult: function(repo){
repo.id =repo.oid;
if(repo.comment!="")
{
repo.text =repo.productName+"("+repo.comment+")"; 
}
else
{
repo.text =repo.productName
}
if(repo.id==undefined)
{
return;
}

    var markup='<div class="clearfix" id='+repo.id+'>' + 
     '<div class="col-sm-20">' + repo.text + '</div>' + 
     '</div>';
return markup;
},
templateSelection: function(repo){
repo.selected = true;  
    repo.id = repo.oid;
    repo.productName = repo.text;
    if(repo.id == null || repo.id == ""){ 
        repo.text = ''; 
        repo.productName = repo.text; 
    }
    return repo.productName;
  }
});

参数项说明:

theme:select2采用的样式
language:select2使用的语言,可以实现select2的国际化
placeholder:select2默认的提示信息

placeholderOption:

allowClear:是否可以清楚选择项,true表示可以,false表示不可用

ajax

    url:代表请求的后端服务器地址

    datatype:返回的数据类型,一般采用json

    data:表示传递给后端的参数。可以支持多个参数传递

    var select2PageSize=10;

     eg:  data: function(params) {
                            var query = {
                                    q: params.term,
                                    pageSize:select2PageSize,
                                    page: params.page
                                  }
                            return query;
                        }

 

     pagesize:每页显示数据的大少。

     page:当前是第几页。

 

processResults:服务端返回的结果。

 

processResults: function(data, params) {
params.page = params.page || 1;
var results = [];
$.each(data.items,function(i,v){
    var o ={};
    o.id=v.oid;
    o.oid=v.oid;
    o.name=v.name;
    o.comment=v.comment;
    results.push(o);
});

 

return {
                                results: results,
                                pagination: {
                                    more: (params.page * select2PageSize) < data.total_count
                                }
                            };

 

服务端返回数据的格式:{

items:{[

 {'zhangsan1','1'}, {'zhangsan2','2'}, {'zhangsan3','3'},

]}

total_count:15

}

 

select2需要的数据格式中必须包含id属性,否则出来的select2组件会遇到不能选择下拉值的问题,所以需要重新分装返回的结果信息。

 

pagination:是否采用分页加载处理。

 

escapeMarkup:特殊的格式化处理。

multiple:multiple 实现多选

minimumInputLength:最少输入的字符数的长度

maximumInputLength:最大输入字符数的长度

templateResult:格式化服务端返回的结果,可以支持图文结合的方式。

templateSelection:选择下拉值的格式化处理函数。

 

 

 

 

   

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    select2最好用的异步请求下拉搜索

    在写一个功能的时候需要根据司机查询车辆,后台数据动态追加到下拉框,因为车辆较多,所以需要用搜索,刚开始用了一种,但是跟打印功能冲突,后来找到了select2,这里有三个文件,一个js,一个css,还有一个用法说明,...

    .net中DataGridView异步加载大批量数据

    多线程异步加载大批量数据到Datagridview中,没次加载1000条数据。 引用DLL,调用方法: string sql = "select top {0} * from {2} where FItemID not in (select top {1} FItemID from {2})"; string tbName = ...

    如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)

    异步加载数据意味着不需要刷新整个页面,就能更新数据,提高用户体验。 在本教程中,我们使用PHP作为服务器端编程语言,jQuery用于简化JavaScript的开发和进行异步HTTP请求(AJAX),MySQL作为数据库存储数据。整个...

    动态加载select标签下拉框数据

    动态加载select下拉框数据不仅适用于Web应用,也适用于移动应用。它有助于减少网络带宽消耗,加快页面响应速度,并允许用户更快地找到他们想要的选项,是现代Web开发中不可或缺的一个技巧。了解和掌握这项技术对于...

    vue+layui实现select动态加载后台数据的例子

    动态加载数据是Web开发中的常见需求,尤其是在单页应用中,经常需要与后端API进行交互,获取数据后动态更新页面内容。在Vue.js中,通常使用`axios`这个HTTP库来发送请求并处理响应数据。 ### 问题解决:时间差问题 ...

    关于layui的下拉搜索框异步加载数据的解决方法

    本文将以layui这个前端UI框架为例,详细讲解如何实现下拉搜索框异步加载数据的功能。 首先,了解layui框架和其在项目中的应用场景。layui是一套基于jQuery的前端UI解决方案,它以简单、易用、高效等特点受到广大...

    ztree 异步加载 拖拽 右键菜单 功能

    异步加载是zTree的核心特性之一,它允许在用户滚动或点击节点时按需加载子节点数据,减少了初始页面加载时的数据量,提高了页面响应速度。实现异步加载需要设置`async`参数,例如: ```javascript var setting = { ...

    使用DataTable插件实现异步加载数据

    table部分代码 用户名 渠道名 游戏名 结果 耗时 创建时间 异步加载数据并实现定制化 下面是简单例子, 其中 table-main 的初始化元素为table的id。 $('#select-game').sel

    select2ztree.zip

    3. 创建ZTree:将ZTree的节点数据作为JSON对象传递给ZTree初始化方法,配置相应的参数,如显示检查框、是否启用异步加载等。 4. 结合Select2与ZTree:将ZTree的容器作为Select2的下拉菜单,通过监听ZTree的节点点击...

    select2.mim.js and select2.min.css.zip

    3. **自定义数据源**:除了与HTML `&lt;option&gt;`元素配合使用,Select2还能连接到远程数据源,如API,实现动态加载和异步搜索。 4. **可定制化外观**:`select2.min.css`提供了丰富的CSS样式,可以调整下拉框的样式,...

    select2+jquery

    5. **AJAX集成**:在描述中提到了"使用Select2 ajax",这意味着Select2可以动态从服务器获取选项,通过设置`ajax`选项,可以实现异步加载数据。 6. **事件**:Select2暴露了一系列事件,如`select2:opening`(下拉...

    select2-3.5.3插件(最完善的选择框插件 )

    通过配置AJAX设置,如URL、参数和数据处理函数,可以轻松实现异步加载数据。 2. **多选功能** 对于需要用户选择多个选项的场景,`select2`提供了多选模式。用户可以通过键盘或鼠标操作来选取多个选项,并且可以...

    动态加载树(tree)和动态加载表格(table)

    1. **懒加载(Lazy Loading)**:仅在需要时加载数据。 2. **异步请求**:通常通过Ajax发送请求到后台服务器获取数据。 3. **递归渲染**:根据返回的数据递归地创建并渲染树节点。 4. **事件监听**:监听用户操作,...

    select2 省市区 级联 下拉菜单

    在IT领域,尤其是在前端开发中,构建用户...在实际应用中,你可能还需要考虑异步加载数据、错误处理和用户输入验证等细节。同时,为了优化性能,可以考虑在用户滚动或选择时按需加载数据,而不是一次性加载所有数据。

    android 选择本地视频和图片,支持异步加载显示

    本文将深入探讨如何实现这一功能,重点包括文件夹选择模式、文件选择模式以及异步加载和显示的技术细节。 首先,我们来看如何实现文件夹选择模式。在Android中,可以使用Intent的ACTION_PICK_TREE行动来打开系统的...

    angular-select2.zip

    通过深入学习其API和示例,你可以发掘出更多高级用法,如异步加载数据、自定义模板等,以满足复杂项目的需求。 总之,Angular-Select2是AngularJS与Select2的完美结合,它不仅保留了Select2的强大功能,还充分利用...

    jquery select2

    5. **数据源多样化**:Select2不仅可以绑定到静态的HTML `&lt;option&gt;` 元素,还可以从Ajax请求、JavaScript数组或任何能返回数据的函数中获取选项,这为动态加载和异步数据处理提供了便利。 二、使用方法与示例 1. *...

    select2例子,按拼音检索

    2. 异步加载数据:如果选项过多,可以考虑使用Ajax异步加载数据,只在用户输入时请求匹配的数据。 3. 提供拼音提示:在输入框下方显示当前输入的拼音,帮助用户确认他们的搜索关键词。 总结,通过结合Select2的强大...

    select2 搜索下拉框插件

    3. **远程数据集**:对于需要从服务器动态加载数据的情况,select2 支持异步数据源,可以实时从服务器获取数据并显示在下拉框中。这使得用户无需预先加载所有数据,降低了页面载入时间,提高了用户体验。 4. **无限...

Global site tag (gtag.js) - Google Analytics