博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JQuery Autocomplete
阅读量:6967 次
发布时间:2019-06-27

本文共 3595 字,大约阅读时间需要 11 分钟。

 

jQuery的Autocomplete(自动完成、自动填充)插件有不少,但比较下来我感觉,还是bassistance.de的JQuery Autocomplete plugin比较强大,我们就来写一些代码感受一下。

 

jquery-autocomplete配置:

<script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>

 <script type="text/javascript" src="/js/jquery.autocomplete.min.js"></script>
 <link rel="Stylesheet" href="/js/jquery.autocomplete.css" />

 

首先是一个最简单的Autocomplete(自动完成)代码片段:

 

 1 
<
html 
xmlns
="http://www.w3.org/1999/xhtml"
>
 2 
<
head 
runat
="server"
>
 3 
    
<
title
>
AutoComplate
</
title
>
 4 
    
<
script 
type
="text/javascript"
 src
="/js/jquery-1.4.2.min.js"
></
script
>
 5 
    
<
script 
type
="text/javascript"
 src
="/js/jquery.autocomplete.min.js"
></
script
>
 6 
    
<
link 
rel
="Stylesheet"
 href
="/js/jquery.autocomplete.css"
 
/>
 7 
    
<
script 
type
="text/javascript"
>
 8 
        $(
function
() {
 9 
            
var
 data 
=
 
"
Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities
"
.split(
"
 
"
);
10 
11 
            $(
'
#keyword
'
).autocomplete(data).result(
function
(event, data, formatted) {
12 
                alert(data);
13 
            });
14 
        });
15 
    
</
script
>
16 
</
head
>
17 
<
body
>
18 
    
<
form 
id
="form1"
 runat
="server"
>
19 
    
<
div
>
20 
        
<
input 
id
="keyword"
 
/>
21 
        
<
input 
id
="getValue"
 value
="GetValue"
 type
="button"
 
/>
22 
    
</
div
>
23 
    
</
form
>
24 
</
body
>
25 
</
html
>

 

result方法是jQuery Autocomplete插件里的重要方法,它在用户在选定了某个条目时触发。data参数为选中的数据。

 

一个稍微复杂的例子,可以自定义提示列表:

 1 
<
html 
xmlns
="http://www.w3.org/1999/xhtml"
>
 2 
<
head 
runat
="server"
>
 3 
    
<
title
>
自定义提示
</
title
>
 4 
    
<
script 
type
="text/javascript"
 src
="/js/jquery-1.4.2.min.js"
></
script
>
 5 
    
<
script 
type
="text/javascript"
 src
="/js/jquery.autocomplete.min.js"
></
script
>
 6 
    
<
link 
rel
="Stylesheet"
 href
="/js/jquery.autocomplete.css"
 
/>
 7 
    
<
script 
type
="text/javascript"
>
 8 
        
var
 emails 
=
 [
 9 
            { name: 
"
Peter Pan
"
, to: 
"
peter@pan.de
"
 },
10 
            { name: 
"
Molly
"
, to: 
"
molly@yahoo.com
"
 },
11 
            { name: 
"
Forneria Marconi
"
, to: 
"
live@japan.jp
"
 },
12 
            { name: 
"
Master <em>Sync</em>
"
, to: 
"
205bw@samsung.com
"
 },
13 
            { name: 
"
Dr. <strong>Tech</strong> de Log
"
, to: 
"
g15@logitech.com
"
 },
14 
            { name: 
"
Don Corleone
"
, to: 
"
don@vegas.com
"
 },
15 
            { name: 
"
Mc Chick
"
, to: 
"
info@donalds.org
"
 },
16 
            { name: 
"
Donnie Darko
"
, to: 
"
dd@timeshift.info
"
 },
17 
            { name: 
"
Quake The Net
"
, to: 
"
webmaster@quakenet.org
"
 },
18 
            { name: 
"
Dr. Write
"
, to: 
"
write@writable.com
"
 },
19 
            { name: 
"
GG Bond
"
, to: 
"
Bond@qq.com
"
 },
20 
            { name: 
"
Zhuzhu Xia
"
, to: 
"
zhuzhu@qq.com
"
 }
21 
        ];
22 
23 
            $(
function
() {
24 
                $(
'
#keyword
'
).autocomplete(emails, {
25 
                    max: 
12
,    
//
列表里的条目数
26 
                    minChars: 
0
,    
//
自动完成激活之前填入的最小字符
27 
                    width: 
400
,     
//
提示的宽度,溢出隐藏
28 
                    scrollHeight: 
300
,   
//
提示的高度,溢出显示滚动条
29 
                    matchContains: 
true
,    
//
包含匹配,就是data参数里的数据,是否只要包含文本框里的数据就显示
30 
                    autoFill: 
false
,    
//
自动填充
31 
                    formatItem: 
function
(row, i, max) {
32 
                        
return
 i 
+
 
'
/
'
 
+
 max 
+
 
'
:"
'
 
+
 row.name 
+
 
'
"[
'
 
+
 row.to 
+
 
'
]
'
;
33 
                    },
34 
                    formatMatch: 
function
(row, i, max) {
35 
                        
return
 row.name 
+
 row.to;
36 
                    },
37 
                    formatResult: 
function
(row) {
38 
                        
return
 row.to;
39 
                    }
40 
                }).result(
function
(event, row, formatted) {
41 
                    alert(row.to);
42 
                });
43 
            });
44 
    
</
script
>
45 
</
head
>
46 
<
body
>
47 
    
<
form 
id
="form1"
 runat
="server"
>
48 
    
<
div
>
49 
        
<
input 
id
="keyword"
 
/>
50 
        
<
input 
id
="getValue"
 value
="GetValue"
 type
="button"
 
/>
51 
    
</
div
>
52 
    
</
form
>
53 
</
body
>
54 
</
html
>

 

formatItem、formatMatch、formatResult是自定提示信息的关键。

formatItem作用在于可以格式化列表中的条目,比如我们加了“I”,让列表里的字显示出了斜体。

formatMatch是配合formatItem使用,作用在于,由于使用了formatItem,所以条目中的内容有所改变,而我们要匹配的是原始的数据,所以用formatMatch做一个调整,使之匹配原始数据,

formatResult是定义最终返回的数据,比如我们还是要返回原始数据,而不是formatItem过的数据。

转载于:https://www.cnblogs.com/fx2008/archive/2011/12/22/2297683.html

你可能感兴趣的文章
控件-TextField、Slider、
查看>>
java中ArrayList 、LinkList区别
查看>>
C#怎么做系统托盘
查看>>
ORA-01940: 无法删除当前连接的用户
查看>>
metasploit nessus & db_autopwn
查看>>
Web API在OWIN下实现OAuth
查看>>
git repository 的使用
查看>>
Android Studio的SVN Performing VCS Refresh/Commit 长时间不结束
查看>>
Cannot call sendError() after the response has been committed(filter问题)
查看>>
Xamarin XAML语言教程Xamarin.Forms中改变活动指示器颜色
查看>>
KnockoutJS + My97DatePicker b
查看>>
简单编写makefile文件,实现GCC4.9编译项目,增加boost库測试等等。。
查看>>
Android-Volley网络通信框架(二次封装数据请求和图片请求(包含处理请求队列和图片缓存))...
查看>>
OpenGL透明与混色效果
查看>>
有间距的表格布局 table布局
查看>>
Java 设计模式—装饰者模式
查看>>
实战c++中的vector系列--vector的遍历(stl算法、vector迭代器(不要在循环中推断不等于end())、operator[])...
查看>>
【一步步学OpenGL 20】 -《点光源》
查看>>
Spring -- <mvc:annotation-driven />
查看>>
java.net.ServerSocket 解析
查看>>