这款自动完成插件委实太强大了。demo演示了不下于其5种特性。
- 自定义列表项的数据格式(格式化数据)
- 支持本地、远程数据搜索
- 拥有自定义事件
- 完美融合thickbox
- 完备的API和debug
- 支持多选
- 支持email自动完成
点此下载(找不到其官方页面,我简要说明下其API,也是自己摸索的,不对的地方请指正。)
- $("#suggest1").autocomplete(cities);
这是最简单的调用方式。接受唯一数据参数:cities(是个数组,详见demo文件夹下的localdata.js)。这是调用本地数据的例子。
- $("#singleBirdRemote").autocomplete("search.php", {
- width: 260,
- selectFirst: false
- });
这是调用远程数据的例子。第一个参数为后台脚本路径。第二个为配置参数对象字面量。宽度,selectFirst:是否选中菜单第一个元素。
- $("#month").autocomplete(months, {
- minChars: 0,
- max: 12,
- autoFill: true,
- mustMatch: true,
- matchContains: false,
- scrollHeight: 220,
- formatItem: function(data, i, total) {
- // don't show the current month in the list of values (for whatever reason)
- if ( data[0] == months[new Date().getMonth()] )
- return false;
- return data[0];
- }
- });
这是调用本地数据的例子。重点来说明下其中的几个特殊有用的参数。
- scrollHeight:菜单高度
- autoFill:自动填充
- formatItem:非常有意思的回调函数。作用是格式化菜单中的元素。例子中这个函数的作用是:不在列表菜单中显示当前月,起到了过滤的作用。
- $("#suggest13").autocomplete(emails, {
- minChars: 0,
- width: 310,
- matchContains: true,
- autoFill: false,
- formatItem: function(row, i, max) {
- return i + "/" + max + ": \"" + row.name + "\" [" + row.to + "]";
- },
- formatMatch: function(row, i, max) {
- return row.name + " " + row.to;
- },
- formatResult: function(row) {
- return row.to;
- }
- });
这是自动完成email的例子。重点讲解下其回调函数。(这里的数据时各数组,数组的每个元素为对象字面量。)
- formatItem:上一个例子有提到过,重点说明下其三个参数:row:一行数据({}),i:第几行,max:总行数。这里返回自定义格式的数据。
- formatMatch:从名称来看为格式化匹配的回调函数。用法目前偶还不知。
- formatResult:格式化结果。可以看到这里面但选择完后输入框显示的只是email,而没有列表中的名称+email