javascript - Tablesorter 过滤器函数扭曲表结果

标签 javascript jquery tablesorter

当对特定名称进行搜索或过滤时,如果有多个结果,表格会变得扭曲,请参阅显示过滤器前和过滤器后表格的图像: How it looks before filter

how it looks after filter

这是我使用的代码:

    <div class="pager">
    <img src="../assets/images/first.png" class="first" alt="First" />
    <img src="../assets/images/previous.png" class="prev" alt="Prev" />
    <span class="pagedisplay"></span> <!-- this can be any element, including an input -->
    <img src="../assets/images/next.png" class="next" alt="Next" />
    <img src="../assets/images/last.png" class="last" alt="Last" />
    <select class="pagesize" title="Select page size">
        <option value="10">10</option>
        <option value="20">20</option>
        <option value="30">30</option>
        <option value="40">40</option>
        <option value="50">50</option>
    </select>
    <select class="gotoPage" title="Select page number"></select>
</div>

<table class="tablesorter">
<colgroup>
    <col width="85" />
    <col width="155" />
    <col width="155" />
    <col width="100" />
    <col width="100" />
</colgroup>

这是javascript:

$(function() {

  $(".tablesorter")
    .tablesorter({
      theme: 'blue',
      // this is the default setting
      cssChildRow: "tablesorter-childRow",

      // initialize zebra and filter widgets
      widgets: ["zebra", "filter", "pager"],

      widgetOptions: {
        // output default: '{page}/{totalPages}'
        // possible variables: {page}, {totalPages}, {filteredPages}, {startRow}, {endRow}, {filteredRows} and {totalRows}
        pager_output: '{startRow} - {endRow} / {filteredRows} ({totalRows})', // '{page}/{totalPages}'
        pager_removeRows: false,


        // include child row content while filtering, if true
        filter_childRows: true,
        // class name applied to filter row and each input
        filter_cssFilter: 'tablesorter-filter',
        // search from beginning
        filter_startsWith: false,
        // Set this option to false to make the searches case sensitive
        filter_ignoreCase: true
      }

    });

  // hide child rows
  $('.tablesorter-childRow td').hide();

  // Toggle child row content (td), not hiding the row since we are using rowspan
  // Using delegate because the pager plugin rebuilds the table after each page change
  // "delegate" works in jQuery 1.4.2+; use "live" back to v1.3; for older jQuery - SOL
  $('.tablesorter').delegate('.toggle', 'click', function() {

    // use "nextUntil" to toggle multiple child rows
    // toggle table cells instead of the row
    $(this).closest('tr').nextUntil('tr.tablesorter-hasChildRow').find('td').toggle();

    return false;
  });

  // Toggle widgetFilterChildRows option
  $('button.toggle-option').click(function() {
    var c = $('.tablesorter')[0].config.widgetOptions,
      o = !c.filter_childRows;
    c.filter_childRows = o;
    $('.state').html(o.toString());
    // update filter; include false parameter to force a new search
    $('table').trigger('search', false);
    return false;
  });
});

表格 HTML

            <tr>
<td rowspan="5"> <!-- rowspan="5" makes the table look nicer -->
    <a href="#" class="toggle">[[+id]] - More info</a> <!-- link to toggle view of the child row -->
</td>
<td>[[+deptown]]</td>
<td>[[+arrtown]]</td>
<td>[[+freightdate]]</td>
<td>[[+cubmt]]</td>
        </tr>
<tr class="tablesorter-childRow"><td colspan="4"><div class="bold">Vehicle Type</div><div>[[+vehicletype]]<br></div></td></tr>
<tr class="tablesorter-childRow"><td colspan="4"><div class="bold">Job Details</div><div>[[+freightvehicledetail]]<br></div></td></tr>
<tr class="tablesorter-childRow"><td colspan="4"><div class="bold">Contact Details</div><div>[[+freightvehiclecontact]]<br></div></td></tr>
<tr class="tablesorter-childRow"><td colspan="4"><div class="bold">Expected Rate in RM</div><div>[[+returnrate]]<br></div></td></tr>

我有两个问题:

  1. 如何让搜索显示清晰、未失真的结果,只需点击“更多信息”即可显示 child 数据?
  2. 要默认显示 100 个结果,我需要做哪些更改?

我只想补充一点,当表格第一次加载时它只显示 20 个结果。

最佳答案

看来问题是 colspan 在应该设置为 5 时设置为 4

<td colspan="5">...</td>

我将 HTML 复制到 this demo , 它似乎可以正常工作。

要默认显示 100 个结果,请设置小部件选项(因为您使用的是寻呼机小部件)pager_size option100

// set number of rows to show; make sure to include this
// value in the select options
pager_size: 100,

此外,在寻呼机 HTML 中的选择中包含此选项

<select class="pagesize" title="Select page size">
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="30">30</option>
    <option value="40">40</option>
    <option value="50">50</option>
    <option value="100">100</option>
</select>

提醒:pager_savePages option默认情况下设置为 true,因此它将页面大小的最后设置保存到本地/ session 存储, 所以将默认设置更改为 100 可能不起作用,直到您手动将页面大小选择设置为 100!或者清除本地/ session 存储。

关于javascript - Tablesorter 过滤器函数扭曲表结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29716835/

相关文章:

javascript - 来自同一元素上两个脚本的单击事件?

javascript - 如何在 JavaScript 中保留一个值

ajax - 表排序器寻呼机小部件和寻呼机插件在功能上有什么区别?

javascript - 如何对表中突出显示的行进行分组 "unhighlight"

javascript - JS是否将参数列表视为可以关闭的范围?

javascript - 如何使 div 对 Angular 线动画?

javascript - 如何将 native Knockout 模板与 KO 外部模板引擎结合使用

javascript - 根据起点和终点改变 div 高度

javascript - 覆盖表排序顺序

javascript - 在 jQuery 中检索 click() 处理程序供以后使用