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

2020-05-19 07:27:41易采站长站整理


//字符串判断函数
//判断一个字符串是否混有字母,全中文返回true
function isChn(str) {
var reg = /^[u4E00-u9FA5]+$/;
if (!reg.test(str)) {
return false;
} else {
return true;
}
}

3、发现当字符串中含有空格的时候,上面的字符串判断函数,返回的内容不符合预期,然后加入了一个去除字符串中所有空格的功能


//去掉字符串中任意位置的空格,返回去除空格后的字符串
function Trim(str, is_global) {
var result;
result = str.replace(/(^s+)|(s+$)/g, "");
if (is_global.toLowerCase() == "g") {
result = result.replace(/s/g, "");
}
return result;
}

4、处理结束用户的输入后,就是提交到后台,然后返回数据源了,也就是availableTags;这里我把availableTags声明为全局变量.并且用同步的Ajax方式取回数据,然后赋值给availableTags,然后在监听键盘的函数中,使用返回的数据调用自动补全功能.


//请求后端获取数据源
function get_source(word = null) {
var url = "<?php echo base_url('admin/Demo/source');?>?keyword=" + word;
$.get({
type: 'GET',
url: url,
async: false,//改为同步
dataType: 'json',
success: function (response) {
console.log('1');
availableTags = response;
}
});
}

这里更新下最开始的接收监听键盘后的value值的函数


//捕捉键入的关键字
function catch_keyword(word = null) {
if (isChn(Trim(word, 'g'))) {//去掉空格后检查字符串,如果符合,继续请求后台
get_source(word);
$("#tags").autocomplete({
source: availableTags //数据源
});
}
}

到这里,这个功能已经基本结束了,在测试过程中发现了一个小问题,每次第一次获取用户输入的时候,自动补全功能没有触发,在用户继续输入后,才触发成功,经过调试,我在页面加载完成后,初始化一下自动补全插件,解决了这个问题

6. 附:完整代码

不知道如何在markdown中添加下载链接,只好把完整代码放上来啦!


<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<link rel="stylesheet" href="/jquery-weui-build/dist/lib/weui.min.css" rel="external nofollow" >
<link rel="stylesheet" href="/jquery-weui-build/dist/css/jquery-weui.css" rel="external nofollow" >