我使用下面的这个功能快速查找表格中的项目 我的问题是这个函数只搜索包含给定表中搜索字符串的文本 我一直在尽力修改它以匹配以搜索字符串开头但不起作用的文本。
function searchTable(inputVal)
{
var table = $('#supplier_table_body');
table.find('tr').each(function(index, row)
{
var allCells = $(row).find('td');
if(allCells.length > 0)
{
var found = false;
allCells.each(function(index, td)
{
var regExp = new RegExp(inputVal, '^i');
if(regExp.test($(td).text()))
{
found = true;
return false;
}
});
if(found == true)$(row).show();else $(row).hide();
}
});
}
这是我的jquery
$('#itemname').keyup(function()
{
searchTable($(this).val());
});
答案 0 :(得分:4)
string start anchor不是regex modifier flag,但需要成为表达式的一部分:
var regExp = new RegExp('^'+inputVal, 'i');
答案 1 :(得分:1)
不确定它是否有效,但您可以尝试在inputVal之前添加插入符号(^),同时创建RegExp。
这应该只允许以inputVal开头的单词。
干杯,
编辑:
像这样:
new RegExp("^" + inputVal, "i")
答案 2 :(得分:1)
我认为你应该使用\ b:new RegExp("\\b" + inputVal, "i")
。它找到以inputVal开头的匹配项。
答案 3 :(得分:0)
这个答案是作为社区wiki回答发布的,因为我认为它解决了你所遇到的问题并简化了你的代码(但是作为评论发布的时间太长),所以我建议,尽管目前尚未经过测试,但仍在修改功能:
function searchTable(needle){
var table = $('#supplier_table_body'),
cells = table.find('td');
cells.filter(function(){
return this.textContent.indexOf(needle) !== 0;
}).closest('tr').hide();
}