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