我正在使用表格分类器来创建包含表格的多个页面。我需要为日期(我管理的)添加“上周/月/年”搜索功能,但代码仅在我第一次使用其中一个按钮时执行。
我在http://garciaoliver.com/cosas/table/
做了一个演示如果单击按钮并检查控制台,您将看到只有您单击的第一个实际触发filter_function内的内部代码
filter_functions : {
'.date-col' : function(e, n) {
console.log (e_date > date_start_parsed && e_date < date_end_parsed ? "true" : "false");
// actual filter code is hidden
}
}
然而,可以使用jquery ui日期选择器根据需要多次更改日期(并且触发搜索的代码相同)。
我做了一个jsFiddle所以你可以查看代码(我没有添加所有外部资源来实际运行演示)。
https://jsfiddle.net/fk7pk3y0/
如果您要下载测试文件,请转到http://garciaoliver.com/cosas/table/table.tar.gz
非常感谢任何帮助。
提前谢谢, 伊格纳西奥答案 0 :(得分:1)
搜索实际上是在触发,但唯一被搜索的是结束日期。
实际上,没有任何违法行为,但你太复杂了。我updated the demo删除了filter_function
并添加了这个新功能:
function searchTable() {
var query = [],
str = '';
if ( date_search_start && date_search_end ) {
str = date_search_start + ' - ' + date_search_end;
} else if ( date_search_start && !date_search_end ) {
str = '>=' + date_search_start;
} else if ( !date_search_start && date_search_end ) {
str = '<=' + date_search_end;
}
query[ date_col_id ] = str;
$table.trigger('search', [ query ]);
}
因此,当仅设置开始时,它会过滤大于设定日期的日期。如果仅设置结束日期,则会过滤小于该设置日期的日期。否则,它会将日期变为范围。
在该搜索工作之前,您需要在标头上设置“过滤器解析”类,以便过滤器小部件知道只过滤已解析的值
<th class="date-col filter-parsed">Date</th>
我还必须删除filter_defaultFilter
设置。只是因为您知道filter_placeholder
选项仅适用于过滤器行,因此如果您想将占位符文本添加到日期选择器输入中,则需要添加占位符属性。