基于jQuery實(shí)現(xiàn)搜索關(guān)鍵字自動(dòng)匹配功能
今天我們就一起來(lái)看一個(gè)簡(jiǎn)單的基于jquery的關(guān)鍵字自動(dòng)匹配的例子,希望文章能夠?qū)Ω魑挥袔椭?/p>
例子一
在項(xiàng)目中,有時(shí)候需要用戶選擇城市,但是城市太多,用戶選擇起來(lái)不太方便,所以提供了一個(gè)用戶可以通過(guò)輸入框輸入城市的漢字或者拼音簡(jiǎn)寫(xiě)。結(jié)果示意圖如下:
當(dāng)輸入拼音后結(jié)果示意圖如下:
實(shí)現(xiàn)代碼如下:
<html><head><title>實(shí)時(shí)查詢城市通過(guò)姓名或拼音簡(jiǎn)寫(xiě)</title></head><meta charset = "utf-8" ><script type="text/javascript" src="jquery.min.js"></script><body><input id="searchCityName" style="width: 100%;" type="text" placeholder="中文 / 拼音首字母" /> <ul> <li pinyin="bj" cityname="北京"><a href="/cityBranch/12.html">北京 </a></li> <li pinyin="dl" cityname="大連"><a href="/cityBranch/14.html">大連 </a></li> <li pinyin="sh" cityname="上海"><a href="/cityBranch/13.html">上海 </a></li> <li pinyin="jn" cityname="濟(jì)南"><a href="/cityBranch/15.html">濟(jì)南 </a></li> <li pinyin="gz" cityname="廣州"><a href="/cityBranch/17.html">廣州 </a></li> <li pinyin="jh" cityname="金華"><a href="/cityBranch/18.html">金華 </a></li> <li pinyin="wh" cityname="武漢"><a href="/cityBranch/19.html">武漢 </a></li> <li pinyin="nj" cityname="南京"><a href="/cityBranch/20.html">南京 </a></li> <li pinyin="sz" cityname="深圳"><a href="/cityBranch/22.html">深圳 </a></li> <li pinyin="tj" cityname="天津"><a href="/cityBranch/21.html">天津 </a></li> <li pinyin="cd" cityname="成都"><a href="/cityBranch/24.html">成都 </a></li> <li pinyin="ly" cityname="臨沂"><a href="/cityBranch/25.html">臨沂 </a></li> <li pinyin="cc" cityname="長(zhǎng)春"><a href="/cityBranch/26.html">長(zhǎng)春 </a></li> <li pinyin="hz" cityname="杭州"><a href="/cityBranch/27.html">杭州 </a></li> <li pinyin="nb" cityname="寧波"><a href="/cityBranch/28.html">寧波 </a></li> <li pinyin="qd" cityname="青島"><a href="/cityBranch/29.html">青島 </a></li> <li pinyin="sy" cityname="沈陽(yáng)"><a href="/cityBranch/33.html">沈陽(yáng) </a></li> </ul> <script> function searchCity() { var searchCityName = $("#searchCityName").val(); if (searchCityName == "") { $("ul li").show(); } else { $("ul li").each( function() { var pinyin = $(this).attr("pinyin"); var cityName = $(this).attr("cityName"); if (pinyin.indexOf(searchCityName) != -1 || cityName.indexOf(searchCityName) != -1) { $(this).show(); } else { $(this).hide(); } }); } } $('#searchCityName').bind('input propertychange', function() { searchCity(); }); </script></body></html>
注意點(diǎn):
1、當(dāng)我想實(shí)現(xiàn)在輸入框內(nèi)實(shí)時(shí)查詢列表值,想到的第一種方案是用ajax,但是想了一下發(fā)現(xiàn)列表的值基本是固定的,為什么不一次加載出來(lái)呢,所以把后臺(tái)代碼改了一下,將所有城市詳情加載出來(lái)。
2、輸入框內(nèi)值改變需要觸發(fā)事件,我第一個(gè)想法是用onchange,但是事實(shí)上onchange是輸入框值改變且輸入框失去焦點(diǎn),所以我最終用了keyup。keyup在電腦上測(cè)試都沒(méi)有問(wèn)題,但是在微信端,怎么都不生效。于是將keyup替換成了最終的 bind(‘input propertychange', function() {} 。
3、在判斷城市字符是否包含輸入框內(nèi)的字符時(shí),我用contains函數(shù),在火狐下測(cè)試沒(méi)有任何問(wèn)題,但是在chrome和微信客戶端不生效。最后將contains替換成了indexOf。
例子二、使用jquery.autocomplete插件來(lái)實(shí)現(xiàn)。
1、使用設(shè)置
首頁(yè),要把插件的js代碼嵌入到你自己的項(xiàng)目中去。
<script src="jquery.js" type="text/javascript"><!--mce:0--></script><script src="jquery.autocomplete.js" type="text/javascript"><!--mce:1--></script>
2、使用方法
為要實(shí)現(xiàn)自動(dòng)匹配提示的 input 表單添加 AutoComplete 功能。
<input id="query" name="q" /> 初始化 AutoComplete 對(duì)象,確保正確加載 DOM 對(duì)象,否則IE下的用戶可能會(huì)出現(xiàn)錯(cuò)誤。 $('#query').autocomplete({ serviceUrl: 'service/autocomplete.ashx', // Page for processing autocomplete requests minChars: 2, // Minimum request length for triggering autocomplete delimiter: /(,|;)\s*/, // Delimiter for separating requests (a character or regex) maxHeight: 400, // Maximum height of the suggestion list, in pixels width: 300, // List width zIndex: 9999, // List's z-index deferRequestBy: 0, // Request delay (milliseconds), if you prefer not to send lots of requests while the user is typing. I usually set the delay at 300 ms. params: { country: 'Yes'}, // Additional parameters onSelect: function(data, value){ }, // Callback function, triggered if one of the suggested options is selected, lookup: ['January', 'February', 'March'] // List of suggestions for local autocomplete });
根據(jù)文本表單中的輸入信息,進(jìn)行關(guān)鍵字提示匹配。
{ query:'Li', // Original request suggestions:['Liberia','Libyan Arab Jamahiriya','Liechtenstein','Lithuania'], // List of suggestions data:['LR','LY','LI','LT'] // Optional parameter: list of keys for suggestion options; used in callback functions. } jQuery AutoComplete 插件支持 on/off功能,從而控制效果的開(kāi)關(guān)。 var ac = $('#query').autocomplete({ /*parameters*/ }); ac.disable(); ac.enable(); ac.setOptons({ zIndex: 1001 });
3、設(shè)置表現(xiàn)樣式
最后,用div和css美化表現(xiàn)效果。
<div class="autocomplete-w1"><div id="Autocomplete_1240430421731" class="autocomplete" style="width: 299px;"><div><strong>Li</strong>beria</div><div><strong>Li</strong>byan Arab Jamahiriya</div><div><strong>Li</strong>echtenstein</div><div class="selected"><strong>Li</strong>thuania</div></div></div> .autocomplete-w1 { background:url(img/shadow.png) no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }.autocomplete .selected { background:#F0F0F0; }.autocomplete div { padding:2px 5px; white-space:nowrap; overflow:hidden; }.autocomplete strong { font-weight:normal; color:#3399FF; } jQuery AutoComplete
更多搜索功能實(shí)現(xiàn)的精彩文章,請(qǐng)點(diǎn)擊專題:javascript搜索功能匯總 進(jìn)行學(xué)習(xí)
以上分享的兩個(gè)例子都是關(guān)于jQuery實(shí)現(xiàn)搜索關(guān)鍵字自動(dòng)匹配功能的,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
利用jquery.qrcode在頁(yè)面上生成二維碼且支持中文
這篇文章主要介紹了利用jquery.qrcode在頁(yè)面上生成二維碼且支持中文。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02Jquery AJAX 用于計(jì)算點(diǎn)擊率(統(tǒng)計(jì))
Jquery AJAX實(shí)現(xiàn)頁(yè)面的統(tǒng)計(jì)代碼,后臺(tái)用的是php,這篇文章主要是學(xué)習(xí)jquery下ajax的簡(jiǎn)單實(shí)現(xiàn)。2010-06-06javascript trim函數(shù)在IE下不能用的解決方法
trim 函數(shù)在firefox 下面使用沒(méi)有問(wèn)題,但是在IE下就報(bào)錯(cuò),下面是可行的解決方法,大家可以看看2014-09-09一款基于jQuery的圖片場(chǎng)景標(biāo)注提示彈窗特效
這篇文章主要介紹了一款基于jQuery的圖片場(chǎng)景標(biāo)注提示彈窗特效,需要的朋友可以參考下2015-01-01jQuery操作動(dòng)態(tài)生成的內(nèi)容的方法
這篇文章主要介紹了jQuery操作動(dòng)態(tài)生成的內(nèi)容的方法,對(duì)比分析了bind與live方法,說(shuō)明了live方法在處理新增元素時(shí)的作用,需要的朋友可以參考下2016-05-05jquery js 獲取時(shí)間差、時(shí)間格式具體代碼
獲取獲得時(shí)間差、時(shí)間格式的方法有很多,下面為大家介紹下使用jquery及js實(shí)現(xiàn)的功能代碼2013-06-06jquery中關(guān)于bind()方法的使用技巧分享
這篇文章主要給大家分享了jquery中關(guān)于bind()方法的使用技巧,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03JQuery+Bootstrap 自定義全屏Loading插件的示例demo
這篇文章主要介紹了JQuery+Bootstrap 自定義全屏Loading插件,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07