js实现模糊查询
1、简述
实现模糊查询方法有很多种,后端可以实现,前端使用js也可以实现。
后端实现起来需要根据输入框中搜索的关键字,去后台拼接SQL语句查询。
前端直接使用字符串的indexOf()方法或者正则表达式匹配实现,相比后端实现这种方法的用户体验更友好。
2、demo
当输入框中输入内容或者点击查询按钮时,
根据输入框中的关键字,模糊查询下面表格的内容,并重新渲染表格。
代码如下。
(1)javascript代码:
let listData = ["上海市","黄浦区","卢湾区","徐汇区","长宁区","静安区","普陀区",
"闸北区","杨浦区","虹口区","闵行区","宝山区","嘉定区","浦东新区",
"金山区","松江区","青浦区","南汇区","奉贤区","崇明县" ]; function Fuzzysearch(listData){ this.listData = listData,//请求得到的数据
this.searchKey = document.getElementById('searchKey'),//查询关键字
this.searchBtn = document.getElementById('searchBtn'),//查询按钮
this.searchShow = document.getElementById('searchShow')//显示查询结果的表格 this.renderTab(this.listData);
this.init();
} Fuzzysearch.prototype={
init :function(){
let _this = this;
//键入触发事件
_this.searchKey.onkeyup=function(){
let searchResult = _this.searchFn();
_this.renderTab(searchResult);
}; //点击查询按钮触发事件
_this.searchBtn.onclick=function(){
let searchResult = _this.searchFn();
_this.renderTab(searchResult);
}; },
searchFn:function(){
var keyWord = this.searchKey.value;
var len = this.listData.length;
var arr = [];
var reg = new RegExp(keyWord);
for(var i=0;i<len;i++){
//如果字符串中不包含目标字符会返回-1
if(this.listData[i].match(reg)){
arr.push(listData[i]);
}
}
return arr;
}
,renderTab:function(list){
let colStr = ''; if(list.length==0){
this.searchShow.innerHTML='未查询到关键字相关结果';
return;
} for(var i=0,len=list.length;i<len;i++){
colStr+="<tr><td>"+list[i]+"</td></tr>";
}
this.searchShow.innerHTML = colStr;
} } new Fuzzysearch(listData);
(2)html代码:
<div class="wrap">
<input type='text' value="" id='searchKey'/>
<input type='button' value="查询" id='searchBtn'/>
<table id='searchShow'></table>
</div>
(3)css代码:
.wrap{width:50%;margin:0 auto;}
#searchShow{font-size:12px;border:1px solid #ccc; border-collapse: collapse;margin-top:20px;}
#searchShow td{border:1px solid #ccc;padding:4px 5px;}
#searchShow tr:nth-child(even) {
background: hsl(180, 35%, 58%);
color: #fff;
}
#searchShow tr:nth-child(odd) {
background: White;
}
3、运行效果


4、源码下载
https://github.com/lemonYU/fuzzySearch#fuzzysearch
如果对您有帮助的话,记得帮我star哦(笔芯ღ( ´・ᴗ・` ))
js实现模糊查询的更多相关文章
- 编写简易的JS输入框模糊查询匹配(附有源码和demo)
前言:JS输入框模糊匹配插件以前在工作写过一个类似的 所以这次写轻松很多,这次写优化了几个方面: 1. 添加动态加载css文件 不需要引入css css全部在JS动态生成. 2. 不需要额外的标签 只 ...
- js的模糊查询
在项目中会用到模糊查询,之前在首页是用的element的tree显示的目录,会有用到搜索,但tree里边会有自带的模糊查询,用filter-node-method方法使用 但上次的项目中 又涉及到不试 ...
- 模糊查询基于select遍历json文件自动填充的实现
HTML页面 <tr> <td align="left"><span>案由</span> <input type=" ...
- js—模糊查询
首先要明白什么是模糊查询(废话又来了),就是根据关键字把列表中符合关键字的一项或某项罗列出来,也就是要检查列表的每一项中是否含有关键字,因此抽象一下就是一个字符串中是否含有某个字符或者字符串. 以下例 ...
- js前端实现模糊查询
对于模糊查询,一般都是传关键字给后端,由后端来做.但是有时候一些轻量级的列表前端来做可以减少ajax请求,在一定程度上提高用户体验.废话不多说,直接上代码. //字符串方法indexOfvar len ...
- 前端js模糊搜索(模糊查询)
1.html结构: <label for="searchShop" class="clear pos-a" style="top:17px;&q ...
- js模糊查询案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js实现下拉框模糊查询
keyup方法触发模糊查询 list : Array<any> //下拉列表所有内容 filtList:Array<any> //过滤后的内容 inputContent : s ...
- 通过模拟数据,使用js在前端实现模糊查询下拉框功能实例教程
所谓模糊查询就是通过关键字在数据中匹配到包含关键字的数据,而得出的查询结果.本实例教程讲解在前端文本框输入关键字,显示匹配的数据列表功能. 首先得准备一个文本框和显示数据列表的div元素,html代码 ...
随机推荐
- tomcat打印GC日志
在catinlin.sh的最上面加上 JAVA_OPTS=" -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/lnmp/tomcat8 ...
- js测试
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- pipe_wait问题_转
转自:调用Process.waitfor导致的进程挂起 最近遇到pipe_wait问题,父进程调用子进程时,子进程阻塞,cat /proc/$child/wchan输出pipe_wait,进程阻塞在p ...
- Android Studio无法启动,gradle下载不了 提示“building “ 项目名”gradle project info”
Google在2013年I/O大会上发布了Android Studio,AndroidStudio是一个基于IntelliJ思想的新的Android开发工具.下面介绍一下Android Studio安 ...
- hdu6070 Dirt Ratio 二分+线段树
/** 题目:hdu6070 Dirt Ratio 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6070 题意:给定n个数,求1.0*x/y最小是多少.x ...
- 对PHP输入输出流学习和认识
PHP输入和输出流是通过php://来访问的,它允许访问 PHP 的输入输出流.标准输入输出和错误描述符, 内存中.磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器. php://stdi ...
- ASP.NET中JSON对时间进行序列化和反序列化
JSON格式不直接支持日期和时间.DateTime值显示为“/Date(0+0800)/”形式的JSON字符串,其中第一个数字是GMT时区中自1970年1月1 日午夜以来按正常时间(非夏令时)经过的毫 ...
- 读取csv格式的数据
1.直接上代码,关键是会用 2.代码如下: <?php #添加推荐到英文站 $file = fopen('code.csv','r'); while ($data = fgetcsv($file ...
- oracle锁一些知识
表级锁共具有五种模式,如下所示. 行级排他锁(Row Exclusive,简称RX锁) 当我们进行DML时会自动在被更新的表上添加RX锁,或者也可以通过执行lock命令显式的在表上添加RX锁.在该锁定 ...
- SurvivalShooter学习笔记(四.敌人攻击)
此案例中,敌人始终朝着玩家移动 到达攻击玩家范围时(身上的大的触发器被玩家触发时(敌人靠近玩家,当身上的触发器被触发,且对象是玩家时条件达成)) 隔一个时间端,打击玩家一下,对玩家造成伤害,玩家掉血, ...