【问题标题】:Get Jquery data tables to sort on table that contains inputs获取 Jquery 数据表以对包含输入的表进行排序
【发布时间】:2013-08-20 10:46:48
【问题描述】:

我有一张混合了静态 <td> 和输入(包装在 td 中)<td><input></td> 的表格。

要对我使用Jquery data tables plugin 的数据进行排序和过滤,唯一的问题是它不会对<input> 标记进行排序,它只会将它们留在排序列表的底部(或者如果您单击两次则位于顶部),尽管搜索功能仍然适用于所有单元格。

有没有办法让数据表识别输入标签内的值并能够对它们进行排序,我希望用混合数据来做到这一点,即一些静态 td 值(通过计算生成服务器端)和一些inputs?

我在这里解决了这个问题 - http://jsfiddle.net/qE2wV/5/

【问题讨论】:

标签: javascript jquery datatables


【解决方案1】:

尝试编写一个自定义排序函数,如果该行有输入,则该函数可以检索输入的值,否则为文本。见下文,

function getValue(x) {
    if (x.indexOf('input') >= 0) {
        return $(x).val();
    }         
    return x;
}

现在,使用这个函数来实现自定义比较器,如下所示,

jQuery.fn.dataTableExt.oSort['cust-txt-asc'] = function (a, b) {
    var x = getValue(a);
    var y = getValue(b);
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};

jQuery.fn.dataTableExt.oSort['cust-txt-desc'] = function (a, b) {
    var x = getValue(a);
    var y = getValue(b);
    return ((x < y) ? 1 : ((x > y) ? -1 : 0));
};

使用上述搜索比较器初始化数据表,

$('#example').dataTable({"aoColumns": [
        { "sType": "cust-txt" },
        { "sType": "cust-txt" },
        { "sType": "cust-txt" },
        { "sType": "cust-txt" }
    ]});

演示: http://jsfiddle.net/eLTUa/

【讨论】:

  • 感谢@vega - 这很好用,我还检查了你的固定 TableRC 插件,当使用 html 数据表时,它看起来是一种非常方便的方式来模仿 excel 的“冻结”列功能跨度>
  • @sam 感谢您试用我的表格插件。我真的很感激。
【解决方案2】:

This DataTables example shows a sortable DataTable where the fields are inputs

包含初始化代码。

我没有在这里发布它,因为有版权声明,而且我知道一些数据表的东西不是免费的,比如编辑器。

【讨论】:

  • 谢谢,你知道它是否适用于混合数据,即。一些静态的&lt;td&gt;&lt;/td&gt; 和一些&lt;td&gt;&lt;input&gt;&lt;/td&gt; 在相同的行和相同的列中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 2017-09-08
  • 1970-01-01
  • 2022-01-14
  • 2015-04-06
相关资源
最近更新 更多