修改select2插件让其可以根据输入数据类型决定从几个字符开始发送请求
2016-08-25 17:25
555 查看
In the beginning,我要说,我对select2不熟。只是工作中用到所以草草的看了看它的文档。
直奔主题,工作中需要根据用户的名字或手机号来搜索用户,同时因为用户数太多,不能用户的每次的输入都去后台查一遍,所以就要用到select2提供的minimumInputLength来控制从指定的最少字符开始才发送请求。变态的出现啦,对于名字跟手机号不能设定同样的数值。所以需要把minimumInputLength做成一个函数,动态的决定它的数值。而select2本身却把minimumInputLength看作是数字,需要修改select2的源代码了。接下来就说说都修改了哪些地方。主要有两个地方defaults.js和minimumInpoutLength.js。
先说defaults.js,找到一下代码:
if (options.minimumInputLength >0) {
options.dataAdapter = Utils.Decorate(
options.dataAdapter,
MinimumInputLength
);
}
把它修改成:
if (options.minimumInputLength) {
options.dataAdapter = Utils.Decorate(
options.dataAdapter,
MinimumInputLength
);
}
这段代码让我有点惊讶,竟然用的是装饰者模式,有机会一定要把select2的代码读一遍,学习一下人家的思想:)
然后是minimumInputLength.js:
找到query方法,修改成如下:
MinimumInputLength.prototype.query = function (decorated, params, callback) {
params.term = params.term || '';
var minimumInputLength = typeof(this.minimumInputLength)==='function' && this.minimumInputLength(params) || this.minimumInputLength;
if (params.term.length < minimumInputLength) {
this.trigger('results:message', {
message: 'inputTooShort',
args: {
minimum: minimumInputLength,
input: params.term,
params: params
}
});
return;
}
decorated.call(this, params, callback);
};
直奔主题,工作中需要根据用户的名字或手机号来搜索用户,同时因为用户数太多,不能用户的每次的输入都去后台查一遍,所以就要用到select2提供的minimumInputLength来控制从指定的最少字符开始才发送请求。变态的出现啦,对于名字跟手机号不能设定同样的数值。所以需要把minimumInputLength做成一个函数,动态的决定它的数值。而select2本身却把minimumInputLength看作是数字,需要修改select2的源代码了。接下来就说说都修改了哪些地方。主要有两个地方defaults.js和minimumInpoutLength.js。
先说defaults.js,找到一下代码:
if (options.minimumInputLength >0) {
options.dataAdapter = Utils.Decorate(
options.dataAdapter,
MinimumInputLength
);
}
把它修改成:
if (options.minimumInputLength) {
options.dataAdapter = Utils.Decorate(
options.dataAdapter,
MinimumInputLength
);
}
这段代码让我有点惊讶,竟然用的是装饰者模式,有机会一定要把select2的代码读一遍,学习一下人家的思想:)
然后是minimumInputLength.js:
找到query方法,修改成如下:
MinimumInputLength.prototype.query = function (decorated, params, callback) {
params.term = params.term || '';
var minimumInputLength = typeof(this.minimumInputLength)==='function' && this.minimumInputLength(params) || this.minimumInputLength;
if (params.term.length < minimumInputLength) {
this.trigger('results:message', {
message: 'inputTooShort',
args: {
minimum: minimumInputLength,
input: params.term,
params: params
}
});
return;
}
decorated.call(this, params, callback);
};
相关文章推荐
- SG公务车:用车人职务级别改成可以手动输入(续:不删表数据,修改字段类型)
- C#根据输入框的字符判断可以转换为那些数据类型
- Jquery插件--判断文本框还剩多少字符可以输入
- jxl.jar 的百度百科,根据这个还是可以搞出来的,不过就是修改那块写的不是很好,修改其实可以直接读取数据并操作。
- 冒泡排序函数,可以给任意类型的数据排序,比如整形数组,字符数组,字符串数组等
- 冒泡排序函数,可以给任意类型的数据排序,比如整形数组,字符数组,字符串数组等
- C语言基础学习基本数据类型-字符专属的输入输出函数
- Response就是响应服务起器对浏览器请求的文件或数据,可以重定向,发送给浏览器,设置cookie
- HighCharts趋势图动态设置Series数组(根据后台决定具体几个data), 并动态刷新数据
- beego开发web服务+fiddler模拟Post请求+以json类型发送数据
- date类型只取时间前台输入的数据如何在数据库中修改增加
- Problem Description 求n个数的最小公倍数。 Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。 Output 为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。 Sample
- 由计算机产生0-9之间的随机整数,用户输入猜测的数据,统计用户猜测的次数。产生随机数可以使用Math.rangom()静态方法,该方法返回正的double类型浮点数位于(0.0 1.0】间。
- 【C/C++学院】0814-引用高级、引用高级增加/auto自动变量自动根据类型创建数据/Bool/Enum/newdelete全局/大数据乘法与结构体/函数模板与auto/宽字符本地化/inline
- 利用MEF实现插件机制(可根据输入类型来加载特定dll)
- C语言基础学习基本数据类型-字符专属的输入输出函数
- 利用MEF实现插件机制(可根据输入类型来加载特定dll)
- js 限制 可以输入一个小数点,和可以使用退格(int类型和浮点类型的数据)
- ACM 4描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。输入 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,
- Python基础:从PHP到Python(一)开始 输入和输出 数据类型