From 74e5adbbd570e6a9ed6021ecaf395109df5a03ec Mon Sep 17 00:00:00 2001 From: jlukic Date: Tue, 28 Apr 2015 13:19:48 -0400 Subject: [PATCH] Fuzzy search no longer evaluates true on numerical matches. Fixed 'get result' when id is falsey i.e 0 --- src/definitions/modules/search.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/definitions/modules/search.js b/src/definitions/modules/search.js index 9e6d8ed6e..db4d6ed5e 100644 --- a/src/definitions/modules/search.js +++ b/src/definitions/modules/search.js @@ -322,15 +322,22 @@ $.fn.search = function(parameters) { result: function(value, results) { var lookupFields = ['title', 'id'], - result = false + result = false + ; + value = (value !== undefined) + ? value + : module.get.value() + ; + results = (results !== undefined) + ? results + : module.get.results() ; - value = value || module.get.value(); - results = results || module.get.results(); if(settings.type === 'category') { module.debug('Finding result that matches', value); $.each(results, function(index, category) { if($.isArray(category.results)) { result = module.search.object(value, category.results, lookupFields)[0]; + // dont continue searching if a result is found if(result) { return false; } @@ -341,7 +348,7 @@ $.fn.search = function(parameters) { module.debug('Finding result in results object', value); result = module.search.object(value, results, lookupFields)[0]; } - return result; + return result || false; }, }, @@ -446,7 +453,7 @@ $.fn.search = function(parameters) { var results = [], fuzzyResults = [], - searchExp = searchTerm.replace(regExp.escape, '\\$&'), + searchExp = searchTerm.toString().replace(regExp.escape, '\\$&'), matchRegExp = new RegExp(regExp.beginsWith + searchExp, 'i'), searchFields = (searchFields !== undefined) ? searchFields @@ -503,6 +510,9 @@ $.fn.search = function(parameters) { termLength = term.length, queryLength = query.length ; + if(typeof query !== 'string') { + return false; + } query = query.toLowerCase(); term = term.toLowerCase(); if(queryLength > termLength) { @@ -641,12 +651,12 @@ $.fn.search = function(parameters) { module.debug('Injecting unique ids into results'); var // since results may be object, we must use counters - categoryIndex = 0, - resultIndex = 0 + categoryIndex = 1, + resultIndex = 1 ; if(settings.type === 'category') { // iterate through each category result - resultIndex = 0; + resultIndex = 1; $.each(results, function(index, category) { $.each(category.results, function(index, value) { var