jQuery 插件autocomplete

时间:2023-03-09 00:39:54
jQuery 插件autocomplete

jQuery 插件autocomplete

自动加载

参考:

http://www.cnblogs.com/Peter-Zhang/archive/2011/10/22/2221147.html

http://johnny-gz.iteye.com/blog/1830235

http://www.jb51.net/article/50463.htm

单击下载资源文件(支持中文)

如图效果

aaarticlea/png;base64,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" alt="" />

  下面来使用 autocomplete插件来实现类似效果。

1. 后台

  public void AutoLoad()
{
List<NameValueItem> data = new List<NameValueItem>(); data.Add(new NameValueItem { Name = "苹果4代iphone正品", Value = "" });
data.Add(new NameValueItem { Name = "苹果4代 手机套", Value = "" });
data.Add(new NameValueItem { Name = "苹果4", Value = "" });
data.Add(new NameValueItem { Name = "苹果皮", Value = "" });
data.Add(new NameValueItem { Name = "苹果笔记本", Value = "" });
base.Response.ContentType = "json";
base.Response.Write(ToJson(data));//ToJson()转为json数据
base.Response.End();
}

  注:该方法返回的数据格式为json字符串。

2. 前台

html:

<asp:TextBox ID="txtIput" runat="server" class="form-control"></asp:TextBox>

js:

<script type="text/javascript">
$(function () {
$.ajax({
type: "POST",
contentType: "application/json",
url: "Edit.aspx?method=AutoLoad",
data: "{}",
success: function (msg) {
$("#txtIput").autocomplete(msg, {
width: "28.8%",
minChars: 0,
max: 50,
delay: 500,
autoFill: true,
mustMatch: true,
matchContains: true,
selectFirst: true,
cacheLength: 1,
matchSubset: true,
matchCase: false,
multiple: false,
multipleSeparator: ",",
scroll: true,
//scrollHeight: 400,
formatItem: function (row, i, max) {
return row.Name + "【" + row.Value + "】"
},
formatResult: function (row, i, max) {
return row.Name;
},
formatMatch: function (row, i, max) {
return row.Name;
}
//extraParams:{},
}).result(function (event, data, formatted) {
alert(data.Value);
//如选择后给其他控件赋值,触发别的事件等等
//$("#emailsAuto").val("123123");
}
);
}
});
});
</script>

引用:

 <script src="../../../Scripts/BaseDataManage/Class/Edit.js"></script>
<link href="../../../Content/autocomplete/autocomplete.min.css" rel="stylesheet" />
<script src="../../../Scripts/jquery-2.0.0.min.js"></script>
<script src="../../../Content/autocomplete/autocomplete.js"></script>

注:高版本的jquery会报 $.browser is undefined。需要将相应的browser替换为/**/.test(navigator.userAgent.toLowerCase())

具体替换方法如下或参考 http://www.jb51.net/article/50463.htm

$.browser.mozilla = /firefox/.test(navigator.userAgent.toLowerCase());
$.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());
$.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());
$.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());

3. autocomplete 参数说明

* minChars (Number)
    在触发autoComplete前用户至少需要输入的字符数.Default: 1,如果设为0,在输入框内双击或者删除输入框内内容时显示列表
* width (Number)
    指定下拉框的宽度. Default: input元素的宽度
* max (Number)
    autoComplete下拉显示项目的个数.Default: 10
* delay (Number)
    击键后激活autoComplete的延迟时间(单位毫秒).Default: 远程为400 本地10
* autoFill (Boolean)
    要不要在用户选择时自动将用户当前鼠标所在的值填入到input框. Default: false
* mustMatch (Booolean)
    如果设置为true,autoComplete只会允许匹配的结果出现在输入框,所有当用户输入的是非法字符时将会得不到下拉框.Default: false
* matchContains (Boolean)
    决定比较时是否要在字符串内部查看匹配,如ba是否与foo bar中的ba匹配.使用缓存时比较重要.不要和autofill混用.Default: false
* selectFirst (Boolean)
    如果设置成true,在用户键入tab或return键时autoComplete下拉列表的第一个值将被自动选择,尽管它没被手工选中(用键盘或鼠标).当然如果用户选中某个项目,那么就用用户选中的值. Default: true
* cacheLength (Number)
    缓存的长度.即对从数据库中取到的结果集要缓存多少条记录.设成1为不缓存.Default: 10
* matchSubset (Boolean)
    autoComplete可不可以使用对服务器查询的缓存,如果缓存对foo的查询结果,那么如果用户输入foo就不需要再进行检索了,直接使用缓存.通常是打开这个选项以减轻服务器的负担以提高性能.只会在缓存长度大于1时有效.Default: true
* matchCase (Boolean)
    比较是否开启大小写敏感开关.使用缓存时比较重要.如果你理解上一个选项,这个也就不难理解,就好比foot要不要到FOO的缓存中去找.Default: false
* multiple (Boolean)
    是否允许输入多个值即多次使用autoComplete以输入多个值. Default: false
* multipleSeparator (String)
    如果是多选时,用来分开各个选择的字符. Default: ","
* scroll (Boolean)
    当结果集大于默认高度时是否使用卷轴显示 Default: true
* scrollHeight (Number)
    自动完成提示的卷轴高度用像素大小表示 Default: 180 
* formatItem (Function)
    为每个要显示的项目使用高级标签.即对结果中的每一行都会调用这个函数,返回值将用LI元素包含显示在下拉列表中. Autocompleter会提供三个参数(row, i, max): 返回的结果数组, 当前处理的行数(即第几个项目,是从1开始的自然数), 当前结果数组元素的个数即项目的个数. Default: none, 表示不指定自定义的处理函数,这样下拉列表中的每一行只包含一个值.
* formatResult (Function)
    和formatItem类似,但可以将将要输入到input文本框内的值进行格式化.同样有三个参数,和formatItem一样.Default: none,表示要么是只有数据,要么是使用formatItem提供的值.
* formatMatch (Function)
    对每一行数据使用此函数格式化需要查询的数据格式. 返回值是给内部搜索算法使用的. 参数值row
* extraParams (Object)
    为后台(一般是服务端的脚本)提供更多的参数.和通常的作法一样是使用一个键值对对象.如果传过去的值是{ bar:4 },将会被autocompleter解析成my_autocomplete_backend.php?q=foo&bar=4 (假设当前用户输入了foo). Default: {}
* result (handler)
    此事件会在用户选中某一项后触发,参数为:
    event: 事件对象. event.type为result.
    data: 选中的数据行.
    formatted:formatResult函数返回的值
    例如:
    $("#singleBirdRemote").result(function(event, data, formatted) {
        //如选择后给其他控件赋值,触发别的事件等等
    });