jQuery 插件 autocomplete 的使用

时间:2022-08-09 14:43:56

今天工作有一个需求是这样的,用户在输入框输入内容时可以动态匹配数据库中的数据,功能类似百度的搜索引擎。这里我用的是jQuery 中 autocomplete 插件,简单方便。

1. 需要下载 jquery autocomplete js文件,可以到 jquery 官网去下载

2. 引入所需 js,css文件

 <script src="Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.autocomplete.js"></script>
<link href="Styles/jquery.autocomplete.css" rel="stylesheet" type="text/css" />

3. 页面代码如下:

<tr>
<td class="label" style="text-align:right">
<em style="color:red; padding-right:10px">*</em>遗失物品:
</td>
<td colspan="3" style="text-align:left;">
    <textarea rows="3" class="easyui-validatebox" cols="60" wrap="physical" id="_txtLostGoods"></textarea>
 </td>
</tr>

4. js 代码(因为  autocomplete 数据源需要的是数组类型,所以我转换了。)

function bindLostGoods() {
  //获取数据库数据
var result = new Array();
var list = null;
$.getJSON(ConstantHelper.Page.ServiceApi
+ '?methodname=getpickupregistername&userid=' + ConstantHelper.Page.UserID + '&appid=1&postdata=' + JSON.stringify(new Object()),
function (data) {
result.length
= 0;;
list
= $.parseJSON(data.Data);
for (var i = 0; i < list.Total; i++) {
result[i]
= list.Data[i].LostGoods;
}
});

$(
"#_txtLostGoods").autocomplete(result, {
minChars:
1,          //至少输入的字符数,default:1;如果设为0,在输入框内双击或者删除内容时显示列表。
width: 200, //下拉框的宽度
max: 10,//下拉项目的个数
scrollHeight: 300, // 下拉框的高度, Default: 180
matchCase: false,     //是否开启大小写敏感
highlight: false,
multiple:
true, //是否允许输入多个值. Default: false
multipleSeparator: "",
scroll:
true,//当结果集大于默认高度时,是否使用滚动条,Default: true
matchContains: true    //决定比较时是否要在字符串内部查看匹配.Default: false

}).result(
function (event, data, formatted) { //此事件会在用户选中某一项后触发,参数为:event: 事件对象, data: 选中的数据行,formatted:formatResult函数返回的值;
//将选择的项目填到文本框
$("#_txtLostGoods").val(formatted);
});
}

5. 然后在页面使用这个方法就好了

<script type="text/javascript">
bindLostGoods();
//动态匹配遗失物品
</script>

6.  效果如下(样式是自己加,觉得默认的不好看):

jQuery 插件 autocomplete  的使用

7. 搞定,收工