jQuery插件實(shí)現(xiàn)可輸入和自動(dòng)匹配的下拉框
實(shí)現(xiàn)可輸入+帶自動(dòng)匹配功能的下拉框,我試過以下幾種方法:
1.直接使用h5的新標(biāo)簽<datalist>,對(duì)應(yīng)demo如下:
<input list="browsers"> <datalist id="browsers"> <option value="Internet Explorer"> <option value="Firefox"> <option value="Chrome"> <option value="Opera"> <option value="Safari"> </datalist>
優(yōu)點(diǎn):節(jié)約js代碼;
缺點(diǎn):IE 9及以下的IE瀏覽器 和 Safari 均不支持 <datalist> 標(biāo)簽(好像還有幾個(gè)瀏覽器也不支持);重復(fù)點(diǎn)擊輸入框或者下拉圖標(biāo)并不能收回下拉列表;樣式難以控制
2.使用基于jQuery的select2插件(需要同時(shí)引入select2.css和select2.js),html部分代碼如下:
<select class="select2_test" > <option></option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select>
js部分代碼如下:
$('.select2_test').select2({
placeholder: "請(qǐng)選擇所屬選項(xiàng)",
allowClear: true;
});
注意:與bootstrap的Modal模態(tài)框結(jié)合使用時(shí),會(huì)出現(xiàn)下拉列表出現(xiàn)在遮罩層的底層和點(diǎn)擊彈出框關(guān)閉按鈕但下拉列表并沒有消失的問題,找了半天原來問題出在select2.css這個(gè)樣式表中,
原因:點(diǎn)擊輸入框,此插件會(huì)生成一個(gè)遮罩層(類名為.select2-drop-mask)和一個(gè)下拉列表(類名為.select2-drop),這兩者的層疊性(z-index)依次為9991,9992,但是modal彈出框的層疊性大于10000,所以才會(huì)導(dǎo)致出現(xiàn)上述兩個(gè)問題
解決辦法:如果將.select2-drop-mask和.select2-drop的z-index分別提高到19991、19992,下拉列表成功顯示在上面,但在打開了下拉列表的前提下點(diǎn)擊modal彈出框的關(guān)閉按鈕會(huì)先收回下拉框,再次點(diǎn)擊才能關(guān)閉彈出窗,用戶體驗(yàn)不是很好;這里可以嘗試提高關(guān)閉按鈕的z-index,前提一定要父元素不能是modal彈出框,否則其提高的z-index無效。
如果想更深入了解select2.js插件,可以參考http://www.dhdzp.com/article/95561.htm
3.造成select2.js上述不適的主要原因在于.select2-drop的失去焦點(diǎn)是要點(diǎn)到select2-drop-mask上才能觸發(fā),為改善這種機(jī)制,這里推薦另一款基于jQuery的下拉搜索框插件magicsuggest(需要同時(shí)引入magicsuggest.css和magicsuggest.js),html部分很簡單,直接就是:
<div id="magicsuggest"></div>
js部分代碼如下:
$('#magicsuggest').magicSuggest({
placeholder:'',
allowFreeEntries: false,
maxSelection:1,
autoSelect:true,
valueField:"id",
displayField:"value",
resultAsString:true,
selectionStacked: true,
highlight:false,
data: ['Paris', 'New York', 'Gotham']
});
優(yōu)點(diǎn):不會(huì)出現(xiàn)層疊性沖突的問題;樣式美觀;允許多項(xiàng)選擇
缺點(diǎn):多余的樣式較多(陰影、高亮、錯(cuò)誤提示、多選),需要根據(jù)具體需要調(diào)整樣式;不能直接通過$(this).val()來獲取原輸入框的值;數(shù)據(jù)量過大時(shí)加載會(huì)出現(xiàn)延遲
4.鑒于上面那個(gè)插件默認(rèn)的是多選的樣式,用到項(xiàng)目里也不能直接獲取<select>標(biāo)簽里的值,這里我個(gè)人推薦chosen這款插件(需要同時(shí)引入chosen.css和chosen.js),html部分代碼如下:
<select data-placeholder="Type 'C' to view" style="width:100%" class="myselect chosen-select-no-results" tabindex="10"> <option value=""></option> <option>American Black Bear</option> <option>Asiatic Black Bear</option> <option>Brown Bear</option> <option>Giant Panda</option> <option>Sloth Bear</option> <option>Sun Bear</option> <option>Polar Bear</option> <option>Spectacled Bear</option> </select>
js部分代碼如下:
var config = {
'.chosen-select':{},
'.chosen-select-deselect':{allow_single_deselect:true},
'.chosen-select-no-single':{disable_search_threshold:10},
'.chosen-select-no-results':{no_results_text:'Oops, nothing found!'},
'.chosen-select-width':{width:"95%"}
}
for (var selector in config) {
$(selector).chosen(config[selector]);
}
注意:如果與bootstrap的Modal模態(tài)框結(jié)合使用時(shí),會(huì)出現(xiàn)下拉列表顯示不出來, 同時(shí).modal-body右側(cè)出現(xiàn)滾動(dòng)條,原因就在于bootstrap給.modal-body設(shè)置了一個(gè)overflow-y:auto的默認(rèn)樣式,所以解決辦法就是給.modal-body添加一個(gè)overflow-y:visible的樣式來覆蓋它。
5.當(dāng)然,實(shí)現(xiàn)相同功能的jQuery插件還有很多,具體可以參考http://www.cnblogs.com/lhb25/p/form-enhanced-with-javascript-three.html
如果大家還想深入學(xué)習(xí),可以點(diǎn)擊jquery下拉框效果匯總、JavaScript下拉框效果匯總進(jìn)行學(xué)習(xí)。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- jQuery實(shí)現(xiàn)id模糊查詢的小例子
- jquery easyui combobox模糊過濾(示例代碼)
- jquery ztree實(shí)現(xiàn)模糊搜索功能
- jquery zTree異步加載、模糊搜索簡單實(shí)例分享
- jQuery實(shí)現(xiàn)select模糊查詢(反射機(jī)制)
- jQuery基于xml格式數(shù)據(jù)實(shí)現(xiàn)模糊查詢及分頁功能的方法
- HTML5+jQuery實(shí)現(xiàn)搜索智能匹配功能
- Jquery插件仿百度搜索關(guān)鍵字自動(dòng)匹配功能
- 基于jQuery實(shí)現(xiàn)搜索關(guān)鍵字自動(dòng)匹配功能
- jQuery簡單實(shí)現(xiàn)的HTML頁面文本框模糊匹配查詢功能完整示例
相關(guān)文章
jQuery+ajax實(shí)現(xiàn)文章點(diǎn)贊功能的方法
這篇文章主要介紹了jQuery+ajax實(shí)現(xiàn)文章點(diǎn)贊功能的方法,涉及jQuery基于ajax無刷新post提交實(shí)現(xiàn)點(diǎn)贊功能的具體步驟與相關(guān)技巧,需要的朋友可以參考下2015-12-12
jQuery實(shí)現(xiàn)文件編碼成base64并通過AJAX上傳的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)文件編碼成base64并通過AJAX上傳的方法,涉及jQuery前臺(tái)使用FileReader對(duì)象編碼base64文件進(jìn)行ajax上傳及后臺(tái)php處理相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
ASP.NET中AJAX 調(diào)用實(shí)例代碼
最近在ASP.NET中做了一個(gè)AJAX調(diào)用 : Client端先從ASP.NET Server后臺(tái)取到一個(gè)頁面模板,然后在頁面初始化時(shí)再從Server中取一些相關(guān)數(shù)據(jù)以實(shí)現(xiàn)頁面模板的動(dòng)態(tài)顯示2012-05-05
jquery手機(jī)觸屏滑動(dòng)拼音字母城市選擇器的實(shí)例代碼
下面小編就為大家分享一篇jquery手機(jī)觸屏滑動(dòng)拼音字母城市選擇器的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12
jQuery解析json數(shù)據(jù)實(shí)例分析
這篇文章主要介紹了jQuery解析json數(shù)據(jù)的具體實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了jQuery解析json格式數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
jQuery 開發(fā)之EasyUI 添加數(shù)據(jù)的實(shí)例
這篇文章主要介紹了jQuery 開發(fā)之EasyUI 添加數(shù)據(jù)的實(shí)例的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-09-09

