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代码 ...
随机推荐
- thread_线程创建
创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果.如果需要获取执行结果,就必须通过共享变量或者使用线 ...
- 日期在苹果手机上显示NaN的处理方法
注意两点即可: 1.苹果只认识 yyyy/mmmm/dddd/ 这类格式的日期 2.如果输出后还要进行处理日期对比,苹果默认会带中文字,如:年月日,需要转成上面1当中的日期格式在转时间戳进行比较 G ...
- mysql获取插入的id主键
long _retId = -1; Connection con = null; try { con = queryRunner.getDataSource().getConnection(); qu ...
- python练习题3--for
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析: 假设该数为 x. 1.则:x + 100 = n2, x + 100 + 168 = m2 ...
- Model Binding is not working. MVC3 视图模型绑定不成功
问题出现在POST方法中,当我要将数据提交到后台的时候,绑定的变量值为null 原因是视图中的名称跟Controller中的视图的名称不一致造成的. 假如你视图中的Model采用的是Html.Labe ...
- 页面中添加qq客服
html页面 <html> <head> <meta http-equiv="Content-Type" content="text/htm ...
- jQuery中jsonp的跨域处理,no access-control-allow-origin,unexpected token
引言 ajax跨域就无法成功获取数据了,需要通过jsonp来处理 报错如下 1.改为jsonp var targeturl = ajaxurl+"?g=Api&m="+m+ ...
- Photoshop脚本之eps转换成jpg
function saveEPS( doc, saveFile ) { var saveOptions = new JPEGSaveOptions( ); saveOptions.encoding = ...
- Java IO系统
理论上,我们可将任何程序分割为三部分:输入.处理和输出.这意味着 IO(输入/输出)是所有程序最为关键的部分.在这一章中,大家将学习Java 为此提供的各种类,如何用它们读写文件.内存块以及控制台 等 ...
- setAttribute()使用方法与IE兼容解决方法
我们经常需要在JavaScript中给Element动态添加各种属性,可以使用setAttribute()来实现,但涉及到了浏览器的兼容性问题.setAttribute(string name,str ...