https://datatables.net/reference/api/search()#Example
我使用上面的链接作为搜索示例,但我的设置完全不同。
<td>
<div class="plCell_desktop">
<input type="radio" class="" data-lnk_id="414107671" data-group="RUTH">
<label for="414107671">RUTH</label>
</div>
</td>
这是我表格的摘录。
唯一可见的数据位是“Ruth”。
但是当我搜索 say '76' 时,结果仍然会带回“Ruth”。
原因很可能是我在表格单元格中的信息比“Ruth”多得多。
好的,我的问题是。你能强制 DataTables 从单词的开头搜索吗?例如(输入“uth”不会带回“Ruth”,但“Ru”会,希望它有意义)。
你能用数据表做一种“innerHTML.val()”搜索吗?
最佳答案
Okay, so my question is. Can you force DataTables to search from the beginning of a word. e.g. ( enter "uth" will not bring back "Ruth", but "Ru" will, hope it makes sense ).
是的。预先创建一个自定义过滤器来执行这样的过滤。默认的“智能搜索”将被自定义过滤器否决,任何 future 的过滤都将通过它:
$.fn.dataTable.ext.search.push(function( settings, data, dataIndex ) {
var term = $('.dataTables_filter input').val().toLowerCase()
for (var i=0, l=data.length; i<l; i++) {
if (data[i].toLowerCase().indexOf(term) == 0 ) return true
}
return false
})
演示 -> http://jsfiddle.net/qxcjzuxa/
您可能会注意到,让数据表过滤整体区分大小写非常容易(只是一个例子)。过滤器数组是一个 LIFO 结构,您可以在其中放置多个过滤器。如果您出于任何原因将动态禁用“单词开头”过滤,则只需通过 $.fn.dataTable.ext.search.pop()
即可删除过滤器。
关于javascript - 从数据表中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38762946/