ホームページ >ウェブフロントエンド >jsチュートリアル >jQuery_jqueryをベースにした検索キーワード自動マッチング機能の実装

jQuery_jqueryをベースにした検索キーワード自動マッチング機能の実装

WBOY
WBOYオリジナル
2016-05-16 15:34:521660ブラウズ

今日は、jquery に基づいた自動キーワード マッチングの簡単な例を見ていきます。この記事がお役に立てば幸いです。
例 1
プロジェクトでは、ユーザーが都市を選択する必要がある場合がありますが、都市が多すぎてユーザーが選択するのは不便であるため、ユーザーが中国語の文字またはピンインの略語を入力できる入力ボックスが提供されています。市。結果の図は次のとおりです:


ピンインを入力した結果は次のようになります:


実装コードは次のとおりです:

<html><head><title>实时查询城市通过姓名或拼音简写</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="济南"><a href="/cityBranch/15.html">济南 </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="长春"><a href="/cityBranch/26.html">长春 </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="沈阳"><a href="/cityBranch/33.html">沈阳 </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>

注:

1. 入力ボックス内のリストの値をリアルタイムでクエリしたい場合、最初に思い浮かぶ解決策は ajax を使用することですが、よく考えてみると、リストの値は基本的に固定であることがわかりました。一度にすべてをロードしてみてはいかがでしょうか。すべての都市の詳細をロードするように背景コードが変更されました。
2. 入力ボックスの値が変更された場合、イベントをトリガーする必要があります。最初のアイデアは onchange を使用することでしたが、実際には onchange は入力ボックスの値が変更され、入力ボックスがフォーカスを失うことを意味するため、最終的には使用しました。キーアップ。コンピューターでテストするとキーアップに問題はありませんが、WeChat ではキーアップが有効になりません。そのため、 keyup は最後の binding('input propertychange', function() {} .
に置き換えられました。 3. 入力ボックスの文字が都市の文字に含まれるかどうかを判断する場合、contains 関数を使用しました。Firefox でテストした場合は問題ありませんでしたが、Chrome および WeChat クライアントでは効果がありませんでした。最後に、contains は、indexOf に置き換えられます。

例 2、jquery.autocomplete プラグインを使用して実装します。
1. 設定を使用する
ホームページでは、プラグインの js コードを独自のプロジェクトに埋め込む必要があります。

<script src="jquery.js" type="text/javascript"><!--mce:0--></script><script src="jquery.autocomplete.js" type="text/javascript"><!--mce:1--></script>

2. 使い方
自動一致プロンプトが実装される入力フォームに AutoComplete 関数を追加します。

<input id="query" name="q" />
初始化 AutoComplete 对象,确保正确加载 DOM 对象,否则IE下的用户可能会出现错误。
$('#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 });

テキストフォームの入力情報に基づいてキーワードプロンプトマッチングを実行します。

{ 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功能,从而控制效果的开关。
var ac = $('#query').autocomplete({ /*parameters*/ }); ac.disable(); ac.enable(); ac.setOptons({ zIndex: 1001 });

3. 演奏スタイルを設定します

最後に、div と css を使用してパフォーマンス効果を美しくします。

<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

上記で共有した 2 つの例はすべて jQuery の自動検索キーワード マッチング機能に関するものであり、皆さんの学習に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。