不突出显示连续单词的第一个字母

时间:2016-12-07 11:30:51

标签: javascript jquery html

Here是搜索工作正常的小提琴,但它没有突出显示名称列中文本的第一个字母,并突出显示剩余匹配的字母......问题是什么.....可以有人修理它....... 例如,如果我们键入" v"在搜索栏中显示所有v,但" v"在名称列中它不突出显示.....除了名称列中的第一个文本字母,每个匹配的元素都突出显示

我们必须改变这段代码......



$("#search").keyup(function(){
        _this = $(this);
        var searched_term = $(_this).val().toLowerCase();
		if(_this.val() == ""){
			$.each($("#ftz-table tbody tr td:nth-child(n+2)"), function() { 
			$(this).text($(this).text());	
		})
		return;
		}
        $.each($("#ftz-table tbody tr td:nth-child(n+2)"), function() {
			var original_text = $(this).text();       
			if(!($(this).text().toLowerCase().indexOf(searched_term) == -1)){
				$(this).html(original_text.replace(searched_term, "<mark>"+searched_term+"</mark>"));
			}	
			else{
				$(this).text($(this).text());	
			}
        });
    }); 
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您的搜索不区分大小写但original_text.replace()不是,因此indexOf找到vV,但replace仅替换与搜索输入匹配的搜索情况下。

要保留案例,您需要捕获:

var re = new RegExp("(" + searched_term + ")", "i");
$.each($("#ftz-table tbody tr td:nth-child(n+2)"), function() {
   $(this).html($(this).text().replace(re, "<mark>$1</mark>"));
});

https://jsfiddle.net/xr0hns13/1/

searched_term应该针对任何RegExp保留字符进行转义)