js下载地址:https://github.com/devbridge/jQuery-Autocomplete
1.引入js,引入css
--start---------------------------------------------------------------------------------------------
1.autoComplete()方法
$(selector).autoComplete(配置对象);
具体使用
配置属性
1) lookup
类型:字符串数组或者对象数组
说明:使用本地数据注:如果是对象数组则提示的信息使用value属性(必须的)来指定,对象的其他成员随便设置
案例:
var data=['孙胜利','私房库'];
或者标准的格式应该是下面这样:
var data = [{value:'孙胜利',data:'sunshengli'},{value:'私房库',data:'http:sifangku.com'}];
对象内还可以添加其他各种各样需要的数据!
2) onSelect
类型:function (suggestion){}
说明:用户从提示信息中选择时执行的回调函数,回调函数内部的this代码
当前的input控件
参数说明:suggetsion:具体选择的数据,(就是点击或者按enter建之后选择的数据,如果是对象这会吧这个对象返回)
如果只有字符串.那么返回的也是一个对象,有value和data属性
这个函数里面也可以做提交.....
3) minChars
类型:数字
说明:最少输入几个字符时进行自动提示
默认:1(如果设为0 ,则直接提示)
11) serviceUrl
类型: 字符串或者回调函数
说明:服务器段url地址,如果是函数则在函数内部返回服务器的Url地址即可,如果使用本地的数据则省略本参数即可
注意:服务器端返回数据需符合以下格式
{
"suggestions":["sunshengli","sifangku"]
}或者
{
"suggestions":[{"value":"sunshengli","data":"haahha"},{"value":"sunshengli","data":"haahha"}]
}
13) paramName
类型: 字符串
说明: 将用户填写的数据发送给服务器时使用的名称
默认: query
15) deferRequestBy
类型:数字
说明:延迟Ajax请求的毫秒数,(减轻服务器压力可以稍微给一线延迟)
默认:0
16) nocache
类型:布尔值
说明:是否不缓存自动提示的数据,如果设置为true,则不会对数据进行缓存,那么用户输入相同查询内容的时候也会对服务器发起请求
默认:false(即默保留缓存)
27) formatResult
类型:function (suggestion,currentValue){}
说明:格式化返回的数据,有多少条数据,这个函数就执行多少次
函数参数说明:suggetion:当前执行时的提示数据
currentValue: 用户输入的查询的数据
格式化后的数据需要使用return返回
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String nameSpace = request.getContextPath(); %> <% String projectPath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + nameSpace + "/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>测试autoComplete</title> <script src="<%=projectPath%>js/jquery-1.12.1.js"></script> <script src="<%=projectPath%>js/autoComplete/jquery.autocomplete.js"></script> <link rel="stylesheet" type="text/css" href="<%=projectPath%>style/styles.css"> <script type="text/javascript"> $(function() { var mydata = [ { value : '孙胜利', data : 'sunshengli' }, { value : '私房库', data : 'http:sifangku.com' }, { value : '罗琪', data : 'luoqi' }, { value : '罗志祥', data : 'qq' }, { value : '罗志吉', data : 'ww' } ]; $("#autocomplete").autocomplete( { //lookup : mydata, onSelect:function(suggestion) {//函数的参数都是形参!!! console.log(suggestion); }, //minChars:2, serviceUrl:'/sfk_BBS02/getNameList', formatResult:function(suggestion,currentValue){ return '<div>'+suggestion.value+suggestion.count+'</div>' } }); }); </script> </head> <body> <!-- 测试autoComplete --> <form> 姓名:<input id="autocomplete" type="text" name="abc"> </form> </body> </html>
java
@ResponseBody @RequestMapping("/getNameList") public String getNameList() { /*** * { "suggestions":[{"value":"sunshengli","data":"haahha"},{"value":"sunshengli","data":"haahha"}] } */ log.info("into getNameList"); String names = "{\"suggestions\":[\"sunshengli\",\"罗志祥\",\"罗志志\",\"sifangku\"]}"; String names2 = "{\"suggestions\":[{\"value\":\"sunshengli\",\"data\":\"hahahah\",\"count\":10},{\"value\":\"luozhizhi\",\"data\":\"qq\",\"count\":10}]}"; return names2; } }