jQuery autocomplete 远程过滤器

1 数据在客户端并且在客户端过滤数据,原始数据写在javascript中。

这种方式一般不常用,因为数据多了会带来严重的性能问题。

var items= [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];
$txtkeys.autocomplete({
	source: function (request, response) {
        var results = $.ui.autocomplete.filter(items, request.term);
        response(results.slice(0, 10));
	}
});
  • request.ter 表示在文本框中输入的内容
  • results.slice(0, 10) 表示只需要数组中的第0个-第10个元素。因此下拉列表中最多显示10条数据

2 自动补全通常是根据输入的内容在服务器上过滤后返回。

此方式较为常用,非常适合大数据处理,但是对程序员要求高,一个请求必须严格控制是100ms以内才能随时响应用户快速输入的需求。

var items= [];
function getAutoComplete(items,key){
	//远程请求成功后重新绑定数据
	function bindData(items,result){
		items.lenght = 0;
		for(var i=0;i<result.lenght;++i)
			items.push(result[i]);
	};
	(function(items,key){
		//远程请求。成功后调用bindData函数重新设置下拉列表中的数据
	})(items,key);
};
//根据用户的输入远程过滤数据
$txtkeys.autocomplete({
	source: function (request, response) {	
		//客户端无需再过滤,因为服务器已经过滤好数据了
        response(items);
	}
}).on("input",{items:items},function(e) {
	try { 
        getAutoComplete(e.data.items,$.trim(this.value));
	} catch (exp) {
		alert(exp.message);    
    }
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kmblack1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值