Если вы начинаете с пустого массива данных, которые у вас есть на столе, вы можете сделать что-то умное, заменив встроенное окно поиска. В примере я ссылаюсь я не заботится об одном из столбцов и другие столбцам нужны немного форматирования:
var words = [];
var table = $('#example').DataTable({
"columns": [
null, {
"render": function(data, type, row) {
~words.indexOf(data) || words.push(data);
return data;
}
}, {
"render": function(data, type, row) {
var d = data.replace(/\, /g, " ");
~words.indexOf(d) || words.push(d);
return data.split(", ").join("<br/>");
}
}
],
"initComplete": function() {
var searchBox = $("#example_wrapper").find("input[type='search']");
var searchBoxHolder = searchBox.parent();
searchBox.empty().remove();
searchBoxHolder.append($("<input/>", {
"type": "text"
}).typeahead({
source: words,
afterSelect: function(word) {
table.search(word).draw();
}
}).on("keyup", function(x) {
if (words.indexOf($(x.target).val()) === -1) {
table.search($(x.target).val()).draw();
}
}));
}
});
В основном то, что мы делаем здесь, создавая пустой массив поисковых терминов, то повторяя каждую вторую и третью ячейки и добавляя термин к массиву, если он не существует. В случае с третьей ячейкой мне нужно очистить некоторое форматирование (дополнительная запятая). Затем мы получаем исходное поле поиска, и оно является родительским. Удалите оригинал и добавьте новый родительский. Затем мы установили его как typeahead
со списком условий поиска. Нам нужно убедиться, что он по-прежнему действует как оригинал, поэтому мы добавляем функцию keyup
. Я надеюсь, что в этом есть смысл.
Рабочий пример: here, надеюсь, что это поможет.
Спасибо за ваш ответ. Но я хочу, чтобы встроенная в поле поиска и меток boostrap размещалась как с разными текстовыми полями. Спасибо за помощь выше, это поможет мне продвинуться вперед. –
Как бы вы продолжали заполнять эту таблицу ajax и json? – iamchriswick