Раскрывающийся фильтр jquery datatables
Вот мой код:
$(document).ready(function() {
/* Initialise the DataTable */
var oTable = $('#example').dataTable({
"oLanguage": {
"sSearch": "Search all columns:"
},
"iDisplayLength": 10,
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"bFilter": true,
});
/* Add a select menu for each TH element in the table footer */
$("thead th").each( function ( i ) {
this.innerHTML = fnCreateSelect( oTable.fnGetColumnData(i) );
$('select', this).change( function () {
oTable.fnFilter( $(this).val(), i );
} );
} );
} );
Im, используя плагин dqatables jquery, он работает отлично, как в этом примере:
http://www.datatables.net/release-datatables/examples/api/multi_filter_select.html
То, что я хотел бы сделать, а не иметь раскрывающийся список для каждого столбца, я хотел бы выпадающий список только на одном конкретном столбце.
Поэтому я предполагаю, что мне нужно изменить:
$("thead th").each( function ( i ) {
Но я не уверен, что положить. Любая помощь была бы высоко оценена, спасибо заранее.
Ответы
Ответ 1
Если вам нужен только один столбец, вы можете сделать
var indexOfMyCol = 2;//you want it on the third column
$("thead th").each( function ( i ) {
if(i === indexOfMyCol){
this.innerHTML = fnCreateSelect( oTable.fnGetColumnData(i) );
$('select', this).change( function () {
oTable.fnFilter( $(this).val(), i );
} );
}
} );
Ответ 2
Вы также можете создать свой собственный список выбора и поместить его в любом месте вне таблицы.
<select id="mySelect">
<option value=""></option>
<option value="1">1</option>
...
</select>
<script>
$('#mySelect').on('change',function(){
var selectedValue = $(this).val();
oTable.fnFilter("^"+selectedValue+"$", 0, true); //Exact value, column, reg
});
<script>
Ответ 3
Вы можете использовать фильтр столбцов таблиц даты, см. http://jquery-datatables-column-filter.googlecode.com/svn/trunk/customFilters.html
Это плагин второго уровня для datatables.
Йован
Ответ 4
Вы можете использовать плагин columnfilter...
$(document).ready(function(){
$('#example').dataTable()
.columnFilter({
aoColumns: [ { type: "select", values: [ 'Gecko', 'Trident', 'KHTML', 'Misc', 'Presto', 'Webkit', 'Tasman'] },
{ type: "text" },
null,
{ type: "number" },
{ type: "select" }
]
});
});
Ответ 5
Я думаю, что что-то вроде следующего может сделать трюк
$("thead th").each( function ( i ) {
if(i==1)
{
this.innerHTML = fnCreateSelect( oTable.fnGetColumnData(i) );
$('select', this).change( function () {
oTable.fnFilter( $(this).val(), i );
} );
}
} );
Ответ 6
Возможно, времена изменились, но без плагина и dataTables 1.10.12
и @api
, как человек в предлагаемые комментарии, вы можете использовать целое число индекса на основе нуля из массива для соответствующей таблицы. Пример кода, важные биты находятся в строке 2
ниже. Я ищу только 4-й столбец, и это coffeescript, но вы получаете идею.
$('#example').DataTable initComplete: ->
@api().columns([3]).every ->
column = this
select = $('<select><option value="">Sort Column(All)</option></select>').appendTo($(column.header()).empty()).on('change', ->
val = $.fn.dataTable.util.escapeRegex($(this).val())
column.search(val ? '^'+val+'$' : '', true, false).draw()
return
)
column.data().unique().sort().each (d, j) ->
select.append '<option value="' + d + '">' + d + '</option>'
return
return
return