Tablesorter插件,触发器('搜索',...)不触发

时间:2015-12-29 06:33:40

标签: tablesorter

我正在使用表格分类器来创建包含表格的多个页面。我需要为日期(我管理的)添加“上周/月/年”搜索功能,但代码仅在我第一次使用其中一个按钮时执行。

我在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

非常感谢任何帮助。

提前谢谢, 伊格纳西奥

1 个答案:

答案 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选项仅适用于过滤器行,因此如果您想将占位符文本添加到日期选择器输入中,则需要添加占位符属性。