Maison > interface Web > js tutoriel > Implémentation d'une fonction de correspondance automatique de mots clés de recherche basée sur jQuery_jquery

Implémentation d'une fonction de correspondance automatique de mots clés de recherche basée sur jQuery_jquery

WBOY
Libérer: 2016-05-16 15:34:52
original
1647 Les gens l'ont consulté

Aujourd'hui, nous allons examiner un exemple simple de correspondance automatique de mots clés basée sur jquery. J'espère que l'article vous sera utile.
Exemple 1
Dans le projet, l'utilisateur doit parfois sélectionner une ville, mais il y a trop de villes et il n'est pas pratique pour l'utilisateur de choisir. Par conséquent, une zone de saisie est fournie dans laquelle l'utilisateur peut saisir les caractères chinois ou l'abréviation pinyin de la ville. ville. Le diagramme de résultat est le suivant :


Le résultat après saisie du pinyin est le suivant :


Le code d'implémentation est le suivant :

<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>
Copier après la connexion

Remarque :

1. Lorsque je souhaite interroger la valeur de la liste dans la zone de saisie en temps réel, la première solution qui me vient à l'esprit est d'utiliser ajax, mais après y avoir réfléchi, j'ai trouvé que la valeur de la liste est fondamentalement fixe. . Pourquoi ne pas tout charger en même temps, donc le code d'arrière-plan a été modifié pour charger tous les détails de la ville.
2. Lorsque la valeur dans la zone de saisie change, un événement doit être déclenché. Ma première idée était d'utiliser onchange, mais en fait, onchange signifie que la valeur de la zone de saisie change et que la zone de saisie perd le focus, j'ai donc finalement utilisé. touche. Il n'y a aucun problème avec le keyup lorsqu'il est testé sur l'ordinateur, mais sur WeChat, cela ne prend pas effet. Donc keyup a été remplacé par le final bind('input propertychange', function() {} .
3. Pour juger si les caractères de la ville incluent les caractères dans la zone de saisie, j'ai utilisé la fonction contain. Il n'y a eu aucun problème lors des tests sous Firefox, mais cela n'a pas pris d'effet sur les clients Chrome et WeChat. Enfin, contain est remplacé par indexOf.

Exemple 2, utilisez le plug-in jquery.autocomplete pour l'implémenter.
1. Utilisez les paramètres
Page d'accueil, vous devez intégrer le code js du plugin dans votre propre projet.

<script src="jquery.js" type="text/javascript"><!--mce:0--></script><script src="jquery.autocomplete.js" type="text/javascript"><!--mce:1--></script>
Copier après la connexion

2. Comment utiliser
Ajoutez la fonction AutoComplete au formulaire de saisie où les invites de correspondance automatique doivent être implémentées.

<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 });

Copier après la connexion

Effectuez une correspondance d'invite de mot clé en fonction des informations saisies dans le formulaire de texte.

{ 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 });
Copier après la connexion

3. Définir le style de performance

Enfin, utilisez div et css pour embellir l'effet de performance.

<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
Copier après la connexion

Les deux exemples partagés ci-dessus concernent tous la fonction de correspondance automatique de mots clés de recherche de jQuery. J'espère qu'elle sera utile à l'apprentissage de chacun.

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal