//效果图
//jsp引入文件
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<link rel="stylesheet" type="text/css" href="${ctx}/css/jquery.autocomplete.css" />
<script src="${ctx}/javascripts/jquery.autocomplete.js" type="text/javascript"></script>
//js代码
$("#equipName").autocomplete("${ctx}/dp/takePoints!getUnits.action",{
max: 30, //列表里的条目数
minChars: 0, //自动完成激活之前填入的最小字符
width: 92, //提示的宽度,溢出隐藏
scrollHeight: 300, //提示的高度,溢出显示滚动条
matchContains: true, //包含匹配,就是data参数里的数据,是否只要包含文本框里的数据就显示
autoFill: false, //自动填充
mustMatch:true, //true:只会允许匹配的结果出现在输入框,默认为false
dataType: "json",
multiple: false, //是否多个值(“,”隔开)
matchSubset:true,
extraParams: {
equiptext: function(){ return encodeURIComponent($("#equipName").val()); }
},
parse: function(data) {
var datas = new Array();
if(data !=null && data.length > 0){
$.each(data, function(i,item) {
var _data = {
data:item,
value:item.name,
result:item.name
}
datas.push(_data);
})
}
return datas;
},
formatItem: function(row, i, max) {
return row.name;
},
formatResult: function(row) {
return row.name;
}
}).result(function(e, item, value) {
$("#equipName").val(row.name);
});
//service代码
@Override
public List<Map<String, Object>> findUnits(String equiptext) {
List<Map<String, Object>> dataList = new ArrayList<>();
StringBuffer sb = new StringBuffer();
List<Object> params = new ArrayList<>();
sb.append(" from Unit obj where (1=1) ");
if(equiptext != null && equiptext.length()>0){
sb.append(" and obj.equipAlias like ? ");
params.add("%"+equiptext+"%");
}
List<Unit> units = this.find(sb.toString(), params, null);
if(units != null && units.size()>0){
for (Unit unit : units) {
Map<String, Object> map = new HashMap<>();
map.put("name", unit.getEquipAlias());
map.put("id", unit.getId());
dataList.add(map);
}
}
return dataList;
}
//action代码
public void getUnits() throws UnsupportedEncodingException {
ITakePointsMap pointsMap = (ITakePointsMap) this.getMap();
List<Map<String, Object>> units = pointsMap.findUnits(URLDecoder.decode(equiptext,"UTF-8"));
JSONArray jsonArray = JSONArray.fromObject(units);
ResponseUtil.print(jsonArray.toString());
}