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

Tablesorter plugin, trigger('search', ...) not triggering

我正在使用 Table 分拣器创建许多带有表格的页面。我需要为日期(我管理的)添加 "Last Week / Month / Year" 搜索功能,但代码仅在我第一次使用其中一个按钮时执行。

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

非常感谢任何帮助。

提前致谢, 伊格纳西奥

搜索实际上正在触发,但唯一正在搜索的是结束日期。

其实我没有冒犯的意思,只是你把事情搞得太复杂了。我 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 ]);
}

所以当只设置开始时,它会过滤大于该设置日期的日期。如果只设置了结束日期,它会过滤小于该设置日期的日期。否则,它使日期成为一个范围。

在该搜索起作用之前,您需要在 header 上设置 "filter-parsed" class,以便过滤器小部件知道仅过滤已解析的值

<th class="date-col filter-parsed">Date</th>

我还必须删除 filter_defaultFilter 设置。只是想让您知道 filter_placeholder 选项仅适用于过滤器行,因此如果您想将占位符文本添加到日期选择器输入,则需要添加占位符属性。