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;
答案 0 :(得分:0)
您的搜索不区分大小写但original_text.replace()
不是,因此indexOf
找到v
或V
,但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保留字符进行转义)