首先加载jQuery库和autocomplete相关组件:点击下载:autocomplete.zip
<link rel="stylesheet" href="jquery.ui.autocomplete.css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.ui.core.js"></script> <script type="text/javascript" src="jquery.ui.widget.js"></script> <script type="text/javascript" src="jquery.ui.position.js"></script> <script type="text/javascript" src="jquery.ui.autocomplete.js"></script>
然后我们加一个搜索框,用来自动完成输入功能:
<input type="text" id="keywords" name="keywords" />
jQuery
最后远程调用ajax.php返回json数据:
$(function(){ $("#keywords").autocomplete({ source: "ajax.php", minLength: 1 }); });
参数 | 描述 | 默认值 |
minChars | 至少输入的字符数;如果设为0,在输入框内双击或者删除内容时显示列表。 | 1 |
width | 下拉框的宽度 | - |
max | 下拉项目的个 | 10 |
scrollHeight | 下拉框的高度 | 180 |
scroll | 当结果集大于默认高度时,是否使用滚动条 | true |
multiple | 是否允许输入多个值 | false |
autoFill | 是否自动填充 | false |
multipleSeparator | 输入多个字符时,用来分开各个的字符 | - |
matchCase | 是否开启大小写敏感 | false |
selectFirs | 如果设置成true,下拉列表的第一个值将被自动选择 | true |
matchSubset | 是否启用缓存 | true |
cacheLength | 缓存的长度.即缓存多少条记录.设成1为不缓存 | 10 |
delay | 击键后的延迟时间(单位毫秒) | 20 |
mustMatch | 如果设置为true,只会允许匹配的结果出现在输入框,当用户输入的是非法字符时,将被清除 | false |
matchContains | 决定比较时是否要在字符串内部查看匹配 | false |
formatItem: function(row, i, max) { } | 结果中的每一行都会调用这个函数,返回值将用LI元素包含,显示在下拉列表中. 三个参数(row, i, max): 返回的结果数组, 当前处理的行数(从1开始), 当前结果数组元素的个数. Default: none, 表示不指定自定义的处理函数. | - |
formatResult : function(row, i, max) { } | 和formatItem类似,但可以将将要输入到input文本框内的值进行格式化.同样有三个参数,和formatItem一样.Default: none,表示要么是只有数据,要么是使用formatItem提供的值. | - |
formatMatch: function(row) { } | 对每一行数据使用此函数格式化需要查询的数据格式. 返回值是给内部搜索算法使用的. 参数值row | - |
result (function(event, data, formatted){}) | 此事件会在用户选中某一项后触发,参数为:event: 事件对象, data: 选中的数据行,formatted:formatResult函数返回的值; | - |
extraParams (Object): | 为后台(一般是服务端的脚本)提供更多的参数.和通常的作法一样是使用一个键值对对象.如果传过去的值是{ bar:4 },将会被autocompleter解析成my_autocomplete_backend.php?q=foo&bar=4 (假设当前用户输入了foo). |