如果你认为你的情况更好自定义过滤器为了这个任务。unbind
默认处理程序并每次执行精确匹配过滤器。如果你有一张桌子
var table = $('#example').DataTable()
然后以这种方式使用完全匹配自定义过滤器
$('.dataTables_filter input').unbind().bind('keyup', function() {
var searchTerm = this.value.toLowerCase()
if (!searchTerm) {
table.draw()
return
}
$.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {
for (var i=0;i<data.length;i++) {
if (data[i].toLowerCase() == searchTerm) return true
}
return false
})
table.draw();
$.fn.dataTable.ext.search.pop()
})
这是一个演示->http://jsfiddle.net/hmjnqjbs/1/尝试搜索tokyo
.
好的。我意识到问题不是关于精确匹配过滤器中的“精确单词”,而是更多的全单词搜索。我们想看到Vaio Q900
当我们搜索vaio
,但我们不想看到VaioQ900
因为Vaio
这里not是一个完整的词。这个问题可以通过使用正则表达式单词边界简单地解决\b
:
$('.dataTables_filter input').unbind().bind('keyup', function() {
var searchTerm = this.value.toLowerCase(),
regex = '\\b' + searchTerm + '\\b';
table.rows().search(regex, true, false).draw();
})
下面评论中OP的小提琴已更新->http://jsfiddle.net/hmjnqjbs/3/
Now active
, vaio
等等按预期工作。