2013-08-20 45 views
4

我有一張表,它是靜態的<td>和輸入(包裝在td中)<td><input></td>的混合。獲取jquery數據表在包含輸入的表上排序

要通過排序和篩選數據IVE使用的Jquery data tables plugin唯一的問題是,它不會在<input>標籤,它只是使他們在排序列表的底部(如果你點擊它兩次或頂部)排序,儘管搜索功能仍然適用於所有單元格。

有沒有辦法讓數據表識別輸入標籤內的值,並能夠對它們進行排序,我正在尋找這樣的混合數據,即一些靜態的td值(從計算生成的服務器端)和一些inputs

我做了這裏的問題的的jsfiddle - http://jsfiddle.net/qE2wV/5/

+0

**版本更新後的答案1.10 ** +: http://stackoverflow.com/questions/11376469/can-datatables-sort-a-column-with-an-input-field/29221907#29221907 –

回答

5

嘗試編寫一個自定義排序函數,該函數可以檢索輸入的值,如果該行輸入了其他文本。見下文,

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" } 
    ]}); 

DEMO:http://jsfiddle.net/eLTUa/

+1

Thanks @vega - 這很好,我也檢查了你的固定TableRC插件,它看起來像一個非常方便的方式來模仿excel的'凍結'列功能,當使用html數據表 – sam

+0

@sam謝謝你嘗試我的表插入。對此,我真的非常感激。 –