模仿百度搜索功能,根据空格搜索数据及列表页面根据标注颜色

SQL过滤:多字段过滤

SELECT TEXT FROM (
	SELECT 'ABCDEFG' TEXT FROM DUAL
	UNION
	SELECT '123456789' TEXT FROM DUAL
)
WHERE (REGEXP_LIKE(TEXT, '12|A') OR REGEXP_LIKE(TEXT, '12|A'))

过滤结果:

jsp页面代码实现:

$(function(){
			// 页面搜索条件:“12 AB”
			var textContentArr = $.trim($("#textContent").val()).split(/[(\s)\s]+/);
			$("table td span").each(function(){
				// 标签中显示的文本字符串
				var str = $(this).html();
				// 根据搜索条件匹配,获取匹配字符的下标集合
				var resultIndexArr = [];
				for(var i = 0; i < textContentArr.length; i++){		
					var checkStr = textContentArr[i];
					getCharAtIndexArr(resultIndexArr, checkStr, str);
				}
				// 数组排序
				resultIndexArr = resultIndexArr.sort(function(a,b){
					return a-b;
				});
				// 将字符串转换为数组
				var strArr = str.split('');
				for(var i = 0; i < resultIndexArr.length; i++){
					var index = resultIndexArr[i];
					strArr.splice(index, 1, '<span class="text-red">' + strArr[index] + '</span>');
				}
				// 将数组转换成字符串
				str = strArr.join('');
				$(this).html(str);
			})
		})
		
		// 获取字符串匹配的所有数组数据
		function getCharAtIndexArr(resultIndexArr, checkStr, str){
			var indexArr = [];
			var checkStrLength = checkStr.length;
			// 获取字符串匹配到的所有下标
			while (str.indexOf(checkStr) > -1) {
				var index = str.indexOf(checkStr);
				str = str.substr(index + 1);
				if(indexArr.length > 0){
					index += indexArr[indexArr.length - 1] + 1;
				}
				for(var i = 0; i < checkStrLength; i++){
					indexArr.push(index+i);
				}
			}
			
			// 数组合并
			for(var i = 0; i < indexArr.length; i++){
				if(resultIndexArr.indexOf(indexArr[i]) === -1){
					resultIndexArr.push(indexArr[i]);
				}
			}
		}

思路:

1、先获取搜索条件中的数据按照空格拆分成数组;

2、将页面展示的数据进行循环;

3、列表数据循环中将匹配的字符串下标获取到;

4、根据下标修改字符串中的内容;

其他:

SQL中的过滤条件传参时需要将空格的搜索条件转换成|进行搜索

通过“$.trim($("#textContent").val()).split(/[(\s)\s]+/).join("|")”进行传参

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值