詳解jQuery UI庫中文本輸入自動補(bǔ)全功能的用法
自動補(bǔ)全(autocomplete),是一個可以減少用戶輸入完整信息的UI 工具。一般在
輸入郵箱、搜索關(guān)鍵字等,然后提取出相應(yīng)完整字符串供用戶選擇。
一.調(diào)用autocomplete()方法
$('#email').autocomplete({
source : ['aaa@163.com', 'bbb@163.com', 'ccc@163.com'],
});
二.修改autocomplete()樣式
由于autocomplete()方法是彈窗,然后鼠標(biāo)懸停的樣式。通過Firebug 想獲取到
懸停時背景的樣式,可以直接通過jquery.ui.css 里面找相應(yīng)的CSS。
//無須修改ui 里的CSS,直接用style.css 替代掉
.ui-menu-item a.ui-state-focus {
background:url(../img/xxx.png);
}
三.a(chǎn)utocomplete()方法的屬性
自動補(bǔ)全方法有兩種形式:1.autocomplete(options),options 是以對象鍵值對
的形式傳參,每個鍵值對表示一個選項;2.autocomplete('action', param),action
是操作對話框方法的字符串,param 則是options 的某個選項。
| 屬性 |
默認(rèn)值/類型 |
說明 |
| disabled |
false/布爾值 |
設(shè)置為true,將禁止顯示自動補(bǔ)全。 |
| source |
無/數(shù)組 |
指定數(shù)據(jù)源,可以是本地的,也可以是遠(yuǎn)程的。 |
| minLength |
1/數(shù)值 |
默認(rèn)為1,觸發(fā)補(bǔ)全列表最少輸入字符數(shù)。 |
| delay |
300/數(shù)值 |
默認(rèn)為300 毫秒,延遲顯示設(shè)置。 |
| autoFocus |
false/布爾值 |
設(shè)置為true 時,第一個項目會自動被選定。 |
$('#email').autocomplete({
source : ['aaa@163.com', 'bbb@163.com', 'ccc@163.com'],
disabled : false,
minLength : 2,
delay : 50,
autoFocus : true,
});
| 屬性 |
默認(rèn)值/類型 |
說明 |
| position |
無/對象 |
使用對象的鍵值對賦值,有兩個屬性:my 和at
表示坐標(biāo)。my 是以目標(biāo)點左上角為基準(zhǔn),at 以
目標(biāo)點右下角為基準(zhǔn)。
|
$('#email').autocomplete({
position : {
my : 'left center',
at : 'right center'
}
});
四.a(chǎn)utocomplete()方法的事件
除了屬性設(shè)置外,autocomplete()方法也提供了大量的事件。這些事件可以給各
種不同狀態(tài)時提供回調(diào)函數(shù)。這些回調(diào)函數(shù)中的this 值等于對話框內(nèi)容的div 對象,不
是整個對話框的div。
autocomplete 事件選項
| 事件名 |
說明 |
| create |
當(dāng)自動補(bǔ)全被創(chuàng)建時會調(diào)用create 方法,該方法有兩個
參數(shù)(event, ui)。此事件中的ui 參數(shù)為空。
|
| open |
當(dāng)自動補(bǔ)全被顯示時,會調(diào)用open 方法,該方法有兩個
參數(shù)(event, ui)。此事件中的ui 參數(shù)為空。
|
| close |
當(dāng)自動補(bǔ)全被關(guān)閉時,會調(diào)用close 方法,該方法有兩個
參數(shù)(event, ui)。此事件中的ui 參數(shù)為空。
|
| focus |
當(dāng)自動補(bǔ)全獲取焦點時,會調(diào)用focus 方法,該方法有兩
個參數(shù)(event, ui)。此事件中的ui 有一個子屬性對象item,
分別有兩個屬性:label,補(bǔ)全列表顯示的文本;value,
將要輸入框的值。一般label 和value 值相同。
|
| select |
當(dāng)自動補(bǔ)全獲被選定時,會調(diào)用select 方法,該方法有兩
個參數(shù)(event, ui)。此事件中的ui 有一個子屬性對象item,
分別有兩個屬性:label,補(bǔ)全列表顯示的文本;value,
將要輸入框的值。一般label 和value 值相同。
|
| change |
當(dāng)自動補(bǔ)全失去焦點且內(nèi)容發(fā)生改變時,會調(diào)用change
方法,該方法有兩個參數(shù)(event, ui)。此事件中的ui 參數(shù)
為空。
|
| search |
當(dāng)自動補(bǔ)全搜索完成后,會調(diào)用search 方法,該方法有
兩個參數(shù)(event, ui)。此事件中的ui 參數(shù)為空。
|
| response |
當(dāng)自動補(bǔ)全搜索完成后,在菜單顯示之前,會調(diào)用
response 方法,該方法有兩個參數(shù)(event, ui)。此事件中
的ui 參數(shù)有一個子對象content,他會返回label 和value
值,可通過遍歷了解。
|
$('#email').autocomplete({
source : ['aaa@163.com', 'bbb@163.com', 'ccc@163.com'],
disabled : false,
minLength : 1,
delay : 0,
focus : function (e, ui) {
ui.item.value = '123';
},
select : function (e, ui) {
ui.item.value = '123';
},
change : function (e, ui) {
alert('');
},
search : function (e, ui) {
alert('');
},
});
autocomplete('action', param)方法
| 方法 | 返回值 | 說明 |
| autocomplete('close') | jQuery 對象 | 關(guān)閉自動補(bǔ)齊 |
| autocomplete('disable') | jQuery 對象 | 禁用自動補(bǔ)齊 |
| autocomplete('enable') | jQuery 對象 | 啟用自動補(bǔ)齊 |
| autocomplete('destroy') | jQuery 對象 | 刪除自動補(bǔ)齊,直接阻斷 |
| autocomplete('widget') | jQuery 對象 | 獲取工具提示的jQuery 對象 |
| autocomplete('search',value) | jQuery 對象 | 在數(shù)據(jù)源獲取匹配的字符串 |
| autocomplete('option', param) | 一般值 | 獲取options 屬性的值 |
| autocomplete('option', param,value) | jQuery 對象 | 設(shè)置options 屬性的值 |
五、郵箱自動補(bǔ)全
通過自動補(bǔ)全source 屬性的function 回調(diào)函數(shù),來動態(tài)的設(shè)置數(shù)據(jù)源,以達(dá)到可以
實現(xiàn)郵箱補(bǔ)全功能。
1.?dāng)?shù)據(jù)源function
自動補(bǔ)全UI 的source 不但可以是數(shù)組,也可以是function 回調(diào)函數(shù)。提供了自帶的
兩個參數(shù)設(shè)置動態(tài)的數(shù)據(jù)源。
$('#email').autocomplete({
source : function (request, response) {
alert(request.term); //可以獲取你輸入的值
response(['aa', 'aaaa', 'aaaaaa', 'bb']); //展示補(bǔ)全結(jié)果
},
});
注意:這里的response 不會根據(jù)你搜索關(guān)鍵字而過濾無關(guān)結(jié)果,而是把整個結(jié)果全部呈現(xiàn)出
來。因為source 數(shù)據(jù)源,本身就是動態(tài)改變的,就由自定義,從而放棄系統(tǒng)內(nèi)置的搜索能力。
2.郵箱自動補(bǔ)全
$('#email').autocomplete({
autoFocus : true,
delay : 0,
source : function (request, response) {
var hosts = ['qq.com','163.com', '263.com', 'gmail.com', 'hotmail.com'], //起始
term = request.term, //獲取輸入值
ix = term.indexOf('@'), //@
name = term, //用戶名
host = '', //域名
result = []; //結(jié)果
//結(jié)果第一條是自己輸入
result.push(term);
if (ix > -1) { //如果有@的時候
name = term.slice(0, ix); //得到用戶名
host = term.slice(ix + 1); //得到域名
}
if (name) {
//得到找到的域名
var findedHosts = (host ? $.grep(hosts, function (value, index) {
return value.indexOf(host) > -1;
}) : hosts),
//最終列表的郵箱
findedResults = $.map(findedHosts, function (value, index) {
return name + '@' + value;
});
//增加一個自我輸入
result = result.concat(findedResults);
}
response(result);
},
});
- jQuery實現(xiàn)文本框郵箱輸入自動補(bǔ)全效果
- jquery 實現(xiàn)輸入郵箱時自動補(bǔ)全下拉提示功能
- jquery.fastLiveFilter.js實現(xiàn)輸入自動過濾的方法
- PHP結(jié)合jQuery.autocomplete插件實現(xiàn)輸入自動完成提示的功能
- jQuery實現(xiàn)感應(yīng)鼠標(biāo)動畫效果自動伸長的輸入框?qū)嵗?/a>
- 基于jQuery的input輸入框下拉提示層(自動郵箱后綴名)
- 基于jquery實現(xiàn)的類似百度搜索的輸入框自動完成功能
- 基于jQuery的輸入框無值自動顯示指定數(shù)據(jù)的實現(xiàn)代碼
- jquery判斷字符輸入個數(shù)(數(shù)字英文長度記為1,中文記為2,超過長度自動截?。?/a>
- jQuery 自動增長的文本輸入框?qū)崿F(xiàn)代碼
- jQuery實現(xiàn)自動輸入email、時間和域名的方法
相關(guān)文章
深入分析jQuery的ready函數(shù)是如何工作的(工作原理)
這篇文章主要介紹了jQuery的ready函數(shù)是如何工作的,深入分析了jQueryready函數(shù)的運作流程及相應(yīng)的工作原理,需要的朋友可以參考下2015-12-12
jquery中封裝函數(shù)傳遞當(dāng)前元素的方法示例
這篇文章主要給大家介紹了關(guān)于jquery中封裝函數(shù)傳遞當(dāng)前元素的方法,文中給出了詳細(xì)的示例代碼,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-05-05
jquery checkbox,radio是否選中的判斷代碼
jquery checkbox,radio是否選中的判斷代碼,需要的朋友可以參考下。2010-03-03
DropDownList實現(xiàn)可輸入可選擇(兩種版本可選)
本篇文章主要介紹了DropDownList實現(xiàn)可輸入可選擇的具體實現(xiàn)代碼,并附上兩種版本(js版本和jquery版本),可供大家選擇。有需要的朋友可以參考下2016-12-12

