代码改变世界

jQuery 插件 autocomplete 的使用

2017-05-26 15:52  我的小小熊  阅读(576)  评论(0编辑  收藏  举报

今天工作有一个需求是这样的,用户在输入框输入内容时可以动态匹配数据库中的数据,功能类似百度的搜索引擎。这里我用的是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.  效果如下(样式是自己加,觉得默认的不好看):

7. 搞定,收工