javascript - HTML Table searching with list.js (search function) - modify to show all rows *not* including the search term -
i'm using list.js search function search html table, works fine. use search function search rows don't include keyword.
for example: if have keywords want search:
web pages fred web pages smith freds web pages
it return 'web pages smith' only.
how code need modified this?
this code in question:
var events = require('events'), getbyclass = require('get-by-class'), tostring = require('to-string'); module.exports = function(list) { var item, text, columns, searchstring, customsearch; var prepare = { resetlist: function() { list.i = 1; list.templater.clear(); customsearch = undefined; }, setoptions: function(args) { if (args.length == 2 && args[1] instanceof array) { columns = args[1]; } else if (args.length == 2 && typeof(args[1]) == "function") { customsearch = args[1]; } else if (args.length == 3) { columns = args[1]; customsearch = args[2]; } }, setcolumns: function() { columns = (columns === undefined) ? list.valuenames : columns; }, setsearchstring: function(s) { s = tostring(s).tolowercase(); s = s.replace(/[-[\]{}()*+?.,\\^$|#]/g, "\\$&"); // escape regular expression characters searchstring = s; }, toarray: function(values) { var tmpcolumn = []; (var name in values) { tmpcolumn.push(name); } return tmpcolumn; } }; var search = { list: function() { (var k = 0, kl = list.items.length; k < kl; k++) { search.item(list.items[k]); } }, item: function(item) { item.found = false; (var j = 0, jl = columns.length; j < jl; j++) { if (search.values(item.values(), columns[j])) { item.found = true; return; } } }, values: function(values, column) { if (values.hasownproperty(column)) { text = tostring(values[column]).tolowercase(); if ((searchstring !== "") && (text.search(searchstring) > -1)) { return true; } } return false; }, reset: function() { list.reset.search(); list.searched = false; } }; var searchmethod = function(str) { list.trigger('searchstart'); prepare.resetlist(); prepare.setsearchstring(str); prepare.setoptions(arguments); // str, cols|searchfunction, searchfunction prepare.setcolumns(); if (searchstring === "" ) { search.reset(); } else { list.searched = true; if (customsearch) { customsearch(searchstring, columns); } else { search.list(); } } list.update(); list.trigger('searchcomplete'); return list.visibleitems; }; list.handlers.searchstart = list.handlers.searchstart || []; list.handlers.searchcomplete = list.handlers.searchcomplete || []; events.bind(getbyclass(list.listcontainer, list.searchclass), 'keyup', function(e) { var target = e.target || e.srcelement, // ie have srcelement alreadycleared = (target.value === "" && !list.searched); if (!alreadycleared) { // if oninput have resetted list, nothing searchmethod(target.value); } }); // used detect click on html5 clear button events.bind(getbyclass(list.listcontainer, list.searchclass), 'input', function(e) { var target = e.target || e.srcelement; if (target.value === "") { searchmethod(''); } }); list.helpers.tostring = tostring; return searchmethod; };
i solved tweaking list.js code
item: function(item) { item.found = true; (var j = 0, jl = columns.length; j < jl; j++) { if (search.values(item.values(), columns[j])) { item.found = false; return; } }
i reversed 2 parameters 'item.found = true' , 'item.found = false'
Comments
Post a Comment