2014-12-03 86 views
1

我有一个具有以下结构的列的引导表。该表实际上是使用AJAX从数据库绑定的jQuery dataTables - 根据列中隐藏字段的值过滤行

ROW1:<td>....</td><td>...</td><td><i class='fa fa-arrow'></i><input type='hidden' value='0'</td> 
ROW2:<td>....</td><td>...</td><td><i class='fa fa-bar'></i><input type='hidden' value='1'</td> 
ROW3:<td>....</td><td>...</td><td><i class='fa fa-user'></i><input type='hidden' value='2'</td> 
......... 
......... 

这里隐藏字段的值在从数据库绑定或添加每行时动态更改。在同一列的标题中有文本框,如果我们指定值0,它将根据该列中的该隐藏字段值来过滤表。同样的方法,如果我输入2它将只列出基于2的行作为该特定列单元格的隐藏字段值...

我无法尝试隐藏列,因为已经有很多隐藏列用于过滤目的。因此要求这种模式的解决方案...

+0

忘记关闭''''input type ='hidden'value ='2'' should be'':)但是,有点困惑。你是否要求[** jQuery dataTables **](http://datatables.net/)解决方案来过滤隐藏输入的值? – davidkonrad 2014-12-04 08:01:51

+0

@davidkonrad对不起。:)是的..我的意思是JQUERY数据表格filteration ..我doenst是指基于值的行正常的JQUERY filteration。我试图过滤出表中的行作为DATATABLE过滤器或Jquery数据表中的搜索系统。该函数应该与Datatable中的搜索文本框相同,但搜索只应在一列中的隐藏字段中进行。希望它现在清楚..谢谢 – 2014-12-04 12:15:42

回答

2

好的。不完全确定我明白你想要什么,但是这里就是了。为了把它从顶部:

在同一列有文本框的标题...

喜欢这个?

<tr> 
    <th>col #1</th> 
    <th>col #2</th> 
    <th><input type="text" id="search"/></th> 
</tr> 

...如果我们指定一个值0,将基于该列隐藏字段值过滤表。

首先,重新定义内置html型过滤器,所以它返回隐藏的输入框的值:

$.fn.dataTableExt.ofnSearch['html'] = function (sData) { 
    return $(sData).val(); 
} 

然后分配一个数据表搜索输入框标头中:

$("#search").on('keyup', function() { 
    table.columns(2).search($(this).val()).draw(); 
}); 

观看演示 ​​- >http://jsfiddle.net/xdhgn55q/

+1

优秀的答案..这正是我想要的..但​​有一点挑战,如果我们重新定义默认的HTML类型过滤器,会影响其他过滤器..老实说,我错过了提及那里还有一些其他的过滤器也是正常的HTML过滤器......但那不是什么大问题..我会尽量妥协那部分..但是这个答案将清除问题..谢谢老板! – 2014-12-04 15:12:24

+0

@sforsandeep - 伟大的工作! :)我很乐意明天更新答案。基本上你只是定义一个新类型,比如“隐藏”或其他的东西,比如'$ .fn.dataTableExt.ofnSearch ['hidden'] = function(sData){...'然后设置列'sType'为是那种类型,例如“隐藏”。然后它不会与现有的html列冲突。至少我相信这就是答案。 – davidkonrad 2014-12-04 18:07:24

0

发现这个消息晚了一年,但仍然,为什么重新定义内置的html类型过滤器很重要?

我设法得到一个类似的解决方案,只添加了http表格元素。