select2中ajax,select2异步获取(ajax)数据带记忆功能

主要解决搜索过的关键词就不用ajax去后端取数据了,用已存数据展示即可,相当于把数据记录记忆了,减少后端的压力。

var parent = $("#parentid"), dataCaches = Array(), timeEr = null;

$.fn.select2.amd.define('select2/data/customAdapter', [

'select2/data/array',

'select2/utils'

],

function (ArrayAdapter, Utils) {

function CustomDataAdapter($element, options) {

CustomDataAdapter.__super__.constructor.call(this, $element, options);

}

Utils.Extend(CustomDataAdapter, ArrayAdapter);

CustomDataAdapter.prototype.query = function (q, callback) {

var key = q.term;

if (!key || key.length < 2 || /^[a-zA-Z1-9]+$/.test(key)) {

return false;

}

var dataCache = dataCaches[key];

if (dataCache) {

callback({results: dataCache});

} else {

timeEr && window.clearTimeout(timeEr);

timeEr = window.setTimeout(function () {

$.ajax({

url: '/api/article/get_list',

data: {name: key, puid: puid},

dataType: 'json',

type: 'POST',

success: function (data) {

var _data = [];

if (data.length > 0) {

for (d in data) {

_data.push({

id: data[d].id,

text: data[d].name + "(" + data[d].id + ")"

});

}

}

dataCaches[key] = _data;

callback({results: _data});

}

})

}, 500);

}

};

return CustomDataAdapter;

}

);

var customAdapter = $.fn.select2.amd.require('select2/data/customAdapter');

parent.select2({

language: "zh-CN",

dataAdapter: customAdapter

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值