Javascript 从数据表中搜索

Javascript 从数据表中搜索,javascript,jquery,datatables,Javascript,Jquery,Datatables,我使用上面的链接作为我搜索的例子,但是我的设置是完全不同的 <td> <div class="plCell_desktop"> <input type="radio" class="" data-lnk_id="414107671" data-group="RUTH"> <label for="414107671">RUTH</label> </div> </td>

我使用上面的链接作为我搜索的例子,但是我的设置是完全不同的

<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”多得多

好的,我的问题是。你能强迫数据表从一个词的开头开始搜索吗。e、 g.(输入“uth”不会带回“Ruth”,但“Ru”会,希望它有意义)


你能用DataTables做一种“innerHTML.val()”搜索吗?

你能用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()) {
    // ...
  }
});
好的,我的问题是。您可以强制数据表从 一个词的开头。e、 g.(输入“uth”不会返回“Ruth”, 但是“Ru”会的,希望它有意义)

对。预先创建一个自定义过滤器,执行如下过滤。默认的“智能搜索”将被自定义筛选器否决,任何未来的筛选都将通过以下步骤:

$.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
})
$.fn.dataTable.ext.search.push(功能(设置、数据、数据索引){
var term=$('.dataTables_filter input').val().toLowerCase()
对于(var i=0,l=data.length;i


正如您可能注意到的那样,将dataTables过滤整体区分大小写是非常容易的(仅举一个例子)。过滤器数组是一种后进先出结构,在这种结构中,您可以将多个过滤器置于彼此之上。如果出于任何原因禁用“单词开头”,只需通过
$.fn.dataTable.ext.search.pop()
即可删除过滤器动态筛选。

如果您需要在代码中多次访问匹配的标签,您可能希望避免每次都计算正则表达式。一种解决方案是运行一次性预处理,以添加自定义属性。我们称之为
isOk

然后,可以使用标准jQuery选择器选择标签:

$('label[isOk=Y]')
下面是一些演示代码

var regex=/^RU/;
$('label')。每个(函数(){
$(this.attr('isOk',$(this.html().match(regex)!==null?'Y':'N');
});
var res=$('label[isOk=Y]');
//检查我们是否选择了正确的标签
res.each(function(){console.log($(this.attr('for'));});

露丝
露丝也是
不是真的,露丝

如果我可以问的话。我得到一个错误“TypeError:无法读取未定义的属性“push”。你能帮忙吗?@morne,你似乎在dataTables js完全加载之前调用了这个?这是唯一一个似乎合乎逻辑的解释。你可以随时添加自定义筛选器,也可以在表初始化之后添加。我想这对你来说是可以的。除此之外,我没有完全确定你想要从标签中提取文本部分。如果是这样的话代码当然应该是
if($(数据[i],'label')。text().toLowerCase().indexOf(术语)==0)返回true
…有点延迟。在调试JS时,我得到了一个“未定义的搜索”。这可能是DataTables的版本。还有另一个使用
$.fn.dataTableExt.afnFiltering.push(函数(oSettings,aData,idatadex)的例子
。这可能有用吗?嘿@morne
$.fn.dataTableExt.afnFiltering
$.fn.dataTable.ext.search
的旧名称,它们是一样的。你使用的是dataTables 1.10.x…?:)是的。但是从外观上看,1.9.4。也许我应该换个新版本。