jQuery数据表将全局搜索与列搜索分开

时间:2019-06-13 12:56:49

标签: jquery search datatable datatables

我有一个正在构建数据表的项目,它将使用datatables.net-buttons按钮集合同时具有全局搜索输入(domf)和类似方面的过滤器。在大多数情况下,它工作得很好,但我不能告诉全局(search())忽略构面搜索(columns().search())使用的列。

这是有问题的,因为这些构面和全局搜索之间可能存在重叠,并且可能会为用户不想看到的构面进行假阳性匹配。

例如,假设我有一个电影标题,描述和评级的数据集,并且在评级上设置了一个方面(例如GPGPG-13RNC-17),有人期望搜索G级电影来寻找孩子,然后他们输入NC(例如在北卡罗来纳州的州 ,美国),他们会看到很多意想不到的不当匹配。虽然这是一个人为的示例,但希望它可以帮助解释该问题。

我发现数据表可以使我们extend search宽容,但我担心的是它必须首先搜索整个表,然后在其上进行三分之一†的迭代。这样我可以进一步优化结果集。对于较小的数据集,这不是问题,但我担心的是更大的数据集。

†在浏览器中调试过程使我发现search()两次运行:第一次是调用search()本身,第二次是调用draw()时, table is redrawn

如果我进入配置并将searchable: false设置为我的构面,则columns().search()将不再起作用。

还值得注意的是,columns().search()是基于AND的搜索-意味着所有列都必须产生匹配项,其中search()是基于OR的搜索如果ANY列匹配,它将起作用。


我的问题是,是否有办法同时使用columns().search()search(),但又要互相排斥?或者,如果缺少我可以实现上述目标的配置。

我的版本:

  
      
  • datatables.net:1.10.19
  •   
  • datatables.net-bs4:1.10.19
  •   
  • datatables.net-buttons-bs4:1.5.4
  •   
  • datatables.net-sensitive-bs4:2.2.3
  •   
  • datatables.net-rowreorder-bs4:1.2.5
  •   
  • datatables.net-select-bs4:1.3.0
  •   

0 个答案:

没有答案