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>
这是我表格的摘录。
唯一可见的数据是“露丝” 但是当我搜索说“76”时,它仍会带来“露丝” 原因很可能是表格单元格中的信息比“露丝”更多。
好的,我的问题是。你可以强制DataTables从单词的开头搜索。例如(输入“uth”不会带回“Ruth”,但“Ru”会,希望它有意义)。
你能用DataTables进行一种“innerHTML.val()”搜索吗?
答案 0 :(得分:1)
你能用jQuery吗?
$(".plCell_desktop label").each(function() {
// Using RexExp matching
RexExp regex = new RegExp(); // Your regex obj
if ($(this).val().match(regex)) {
// Do stuff if it matches
}
// Or if you just want to do something if it has a value:
if ($(this).val()) {
// ...
}
});
答案 1 :(得分:1)
好的,我的问题是。你能强制DataTables从中搜索 一个字的开头。例如(输入&#34; uth&#34;不会带回来#34; Ruth&#34;, 但是&#34; Ru&#34;希望它有意义。)
是。预先创建自定义过滤器,执行此类过滤。默认&#34;智能搜索&#34;将被自定义过滤器推翻,任何未来的过滤都将通过:
$.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
})
演示 - &gt;的 http://jsfiddle.net/qxcjzuxa/ 强>
正如您可能已经注意到,将dataTables过滤整体区分大小写(仅作为示例)非常容易。过滤器阵列是LIFO结构,您可以在其中放置多个过滤器。如果您因任何原因禁用&#34;单词&#34;的开头,则只需按$.fn.dataTable.ext.search.pop()
即可删除过滤条件动态过滤。
答案 2 :(得分:1)
如果您需要在代码中多次访问匹配的标签,您可能希望每次都避免计算正则表达式。一种解决方案是运行一次性预处理,以添加自定义属性。我们称之为isOk
。
然后,您可以使用标准jQuery选择器选择标签:
$('label[isOk=Y]')
下面是一些演示代码。
var regex = /^RU/;
$('label').each(function() {
$(this).attr('isOk', $(this).html().match(regex) !== null ? 'Y' : 'N');
});
var res = $('label[isOk=Y]');
// check whether we've selected the correct labels
res.each(function() { console.log($(this).attr('for')); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<td>
<div class="plCell_desktop">
<input type="radio" class="" data-lnk_id="414107671" data-group="RUTH">
<label for="414107671">RUTH</label>
<input type="radio" class="" data-lnk_id="414107672" data-group="RUTH">
<label for="414107672">RUTH TOO</label>
<input type="radio" class="" data-lnk_id="414107673" data-group="RUTH">
<label for="414107673">NOT REALLY RUTH</label>
</div>
</td>