当前位置:首页 > 编程教程 > jQuery技术文章 > 基于jQuery实现搜索关键字自动匹配功能

jQuery实现搜索关键字自动匹配功能的实例

  • 发布时间:
  • 作者:码农之家
  • 点击:151

这篇文章主要知识点是关于jQuery、搜索关键字、自动匹配、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

jQuery实战
jQuery实战高清第三版
  • 类型:jQuery大小:99.0 MB格式:PDF作者:Bear Bibeault
立即下载

基于jQuery实现搜索关键字自动匹配功能

今天我们就一起来看一个简单的基于jquery的关键字自动匹配的例子,希望文章能够对各位有帮助。
例子一
在项目中,有时候需要用户选择城市,但是城市太多,用户选择起来不太方便,所以提供了一个用户可以通过输入框输入城市的汉字或者拼音简写。结果示意图如下:

基于jQuery实现搜索关键字自动匹配功能

当输入拼音后结果示意图如下:

基于jQuery实现搜索关键字自动匹配功能

实现代码如下:

<html><head><title>实时查询城市通过姓名或拼音简写</title></head><meta charset = "utf-8" ><script type="text/javascript" src="jquery.min.js"></script><body><input id="searchCityName"  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是输入框值改变且输入框失去焦点,所以我最终用了keyup。keyup在电脑上测试都没有问题,但是在微信端,怎么都不生效。于是将keyup替换成了最终的 bind(‘input propertychange', function() {} 。
3、在判断城市字符是否包含输入框内的字符时,我用contains函数,在火狐下测试没有任何问题,但是在chrome和微信客户端不生效。最后将contains替换成了indexOf。

例子二、使用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、使用方法
为要实现自动匹配提示的 input 表单添加 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" ><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

 以上分享的两个例子都是关于jQuery实现搜索关键字自动匹配功能的,希望对大家的学习有所帮助。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

jQuery 相关电子书
学习笔记
网友NO.806481

jquery层级选择器(匹配父元素下的子元素实现代码)

实例如下: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"html xmlns="http://www.w3.org/1999/xhtml" head title层级 /title meta http-equiv="Content-Type" content="text/html;charset=UTF-8" / script type="text/javascript" src="jquery-1.7.1.min.js"/script script type="text/javascript" /* ancetor descendant:匹配祖先元素下的后代元素 parentchild:匹配父元素下的子元素 prev+next:匹配前一个元素后的下一个元素,必须是挨着的 prev~siblings:匹配前一个元素后的所有平辈元素 */ window.onload=function(){ $('#btnOk').click(function(){ //匹配父元素下的子元素 $('#indexdiv').html('php'); }); }; /script /head body div id='index' divdiv1/div form divdiv2/div !--为index下div的孙子辈元素-- divdiv3/div!--为index下div的孙子辈元素-- /form divdiv4/div divdiv5/div /div divyang/div !--该元素不是在id=index下的div中,不是其后代元素;是兄弟……

网友NO.273945

JQuery搜索框自动补全(模糊匹配)功能实现示例

本地实现了一个搜索框自动补全的小功能,在JQuery UI的autocomplete插件的基础上,加入了自己的业务代码,贴出来回顾一下,同时可以给大家一个参考 首先贴出的是JQuery Ui 的自动补全插件部分的代码,后面的功能都是在其基础上追加的,直接拷贝到你的本地就可以直观的看到运行效果,也可以到官网上面体验和查看,为了方便,我这里是直接引入的JS链接点击下载JQuery UI的源码 !doctype htmlhtml lang="en"head meta charset="utf-8" meta name="viewport" content="width=device-width, initial-scale=1" titlejQuery UI Autocomplete - Default functionality/title link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="external nofollow" rel="external nofollow" link rel="stylesheet" href="/resources/demos/style.css" rel="external nofollow" script src="https://code.jquery.com/jquery-1.12.4.js"/script script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"/script s……

网友NO.549816

jquery基本选择器匹配多个元素的实现方法

如下所示: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"html xmlns="http://www.w3.org/1999/xhtml" head title new document /title meta http-equiv="Content-Type" content="text/html;charset=UTF-8" / style type="text/css"/style script type="text/javascript" src="jquery-1.7.1.min.js"/script script type="text/javascript" window.onload=function(){ document.getElementById('btnOk').onclick=function(){ $(' div,p ').html('php'); }; }; /script /head body div id="div1"div1/div hr/ divdiv2/div hr/ p杨/p input type="button" id='btnOk' value='确定' / /body/html 以上这篇jquery基本选择器匹配多个元素的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

网友NO.523340

HTML5+jQuery实现搜索智能匹配功能

HTML5+jquery实现的搜索匹配效果,或者说是搜索过滤,当你在文本框输入一个字符时,如果下边的列表中有以此为开头的内容时,将自动为你显示相关内容,示例中仅列出了一些,用时候你可以自己再完善下,代码仅为您提供一种思路,我想对你是有帮助的 效果图: 代码如下: !DOCTYPE html html head lang="en" meta charset="UTF-8" meta name="author" content="dony" meta http-equiv="cache-control" content="no-cache" meta http-equiv="pragma" content="no-cache" meta name="renderer" content="webkit" meta http-equiv="Content-Type" content="text/html; charset=utf-8" meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no,minimal-ui" titledony/title link rel="stylesheet" href="http://api.snaillove.com/cloudmusic/static/css/bootstrap.min.css" rel="external nofollow" style type="text/css" div,li,ul{margin……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com